-
[Swift] - Autoclosures란?iOS/🟠 Swift 2021. 3. 2. 20:32
오토클로저는 함수에 아규먼트로 전달 된 표현식을 래핑하여 자동으로 생성되는 클로저 이다. #이름의 유래: '{ }' 없이 표현식만 가지고 자동으로 클로저로 생성되기 때문입니다. 위 문장은 무슨 뜻일까요? 1. '표현식을 래핑 한다는 것' 은 클로저가 아닌 것을 클로저로 만들어 준다는 의미로 사용되었습니다. 2. 함수 정의부의 파라미터의 타입 앞에 @autoclosure 속성을 붙이면, 아규먼트로 명시적 클로저 대신 클로저 안의 표현식만 전달하면 됩니다. func exampleFunc(param: @autoclosure () -> Int ) { ... } 특징 1. 오토클로저는 어떠한 아규먼트도 받지 않습니다. 대신 오토클로저가 호출될 때 래핑 되어있는 표현식의 값을 반환합니다. 오토클로저에는 명백한 클로..
-
[Swift] - Subscripts (서브스크립트)iOS/🟠 Swift 2021. 2. 19. 17:21
클래스, 구조체, 열거형은 서브스크립트를 정의할 수 있습니다. 서브스크립트는 collection, list, sequence 의 멤버에 빠르게 접근할 수 있는 수단입니다. 서브스크립트를 사용하면 인덱스를 이용해서 값에 접근해서 값을 바꾸거나 검색할 수 있습니다. setter 나 값 검색 메소드의 구현이 필요 없게 됩니다. 예를 들어, 배열은 someArray[index] 와 같이 서브스크립트를 이용해 값에 접근하고 바꿀 수 있습니다. 하나의 타입에 여러개의 서브스크립트를 정의할 수 있습니다. 즉, 파라미터의 타입으로 구분되는 오버로딩이 가능합니다. 서브스크립트는 1차원에 제한되지 않고, 여러 개의 파라미터를 받아서 커스텀 타입에 맞게 정의할 수 있습니다. Subscript Syntax 서브스크립트는 인스..
-
Access Control (접근 제어)iOS/🟠 Swift 2021. 2. 17. 19:05
접근제어는 '파일 간 또는 모듈 간에 접근을 제한할 수 있는 기능' 입니다. import 한 모듈에서 접근할 수 있는 기능을 제한하는 용도로 사용됩니다. 스위프트의 접근제어는 모듈과 소스파일을 기반으로 설계되었습니다. 모듈은 배포할 코드의 묶음 단위 입니다. 통상 하나의 프레임워크, 라이브러리, 또는 애플리케이션이 모듈 단위가 됩니다. 소스파일은 하나의 스위프트 소스코드 파일을 의미합니다. 키워드에 따라 접근할 수 있는 범위가 달라지는데, 4가지로 나눌 수 있습니다. 1. 자신이 구현된 기능 정의 내부 2. 자신이 구현된 파일 내부 3. 자신이 구현된 파일이 포함된 모듈 내부 4. 모듈을 import한 또 다른 모듈 등의 외부 키워드 범위 비고 open 모듈 외부까지 가능 클래스에서만 사용 가능 publ..
-
[iOS] Frame 과 Bounds 의 공통점과 차이점iOS/🤖 App 2021. 2. 4. 10:46
공통점 iOS 에서 Frame 과 Bounds 는 뷰의 좌표와 수치를 나타내는 구조체입니다. 따라서 UIView 인스턴스이거나 UIView 클래스를 상속한 인스턴스는 .frame 과 .bounds 속성을 가지고 있습니다. 좌표는 위치를 표현하는 수단이고, iOS 에서는 2차원 좌표계를 사용합니다. 수치는 공식문서에 `dimensions` 라는 단어로 표현되어 있고, 여기서는 width(너비) 와 height(높이) 값을 나타냅니다. 우선 Frame 과 Bounds의 타입은 모두 CGRect 입니다. 그리고 CGRect 의 주요 속성은 origin 과 size 입니다. origin 은 CGPoint 타입, size 는 CGSize 타입입니다. 즉, Frame 과 Bounds 는 좌표를 orign 속성으로,..
-
Computed Properties (계산 속성) - PropertiesiOS/🟠 Swift 2021. 2. 2. 17:16
"계산 속성" 계산 속성은 클래스, 구조체, 열거형에서 사용할 수 있습니다. 값을 실제로 저장하지 않습니다. 메모리를 차지하지 않습니다. 대신, getter 와 선택적으로 setter 를 제공하여 그것들을 이용해 다른 속성을 조회하고 값을 간접적으로 설정할 수 있습니다. 즉, 계산속성에서 setter 추가는 선택사항입니다. 또한 setter만 존재하는 계산 속성은 없습니다. 기본 문법 struct Rect { ... var center: Point { get { let centerX = origin.x + (size.width / 2) let centerY = origin.y + (size.height / 2) return Point(x: centerX, y: centerY) } set(newCenter..
-
iOS) `Scene-based` 와 `Scene-support` 의 차이점iOS/🛠 이슈와 궁금증 2021. 2. 2. 07:39
관련 글: Managing Your App's Life Cycle - UIKit 위 글을 정리하면서 공식 문서에서 비슷하게 생긴 두 용어 때문에 혼동이 생겨 정리하게 되었습니다. 그 두 용어가 바로 `Scene-based` 와 `Scene-support` 입니다. 임의로 생각해보면, `Scene-based` 앱이라면 자동으로 `Scene-support` 를 할 것 같고, 그 반대로 생각해봐도 그럴 듯 합니다. 그래서 처음에는 두 용어가 같은 것을 의미하는 줄 알았습니다. 결론부터 이야기하면, 두 용어는 가리키는 것이 다릅니다. 우선 Scene 이란 iOS 13부터 적용되는 개념으로, 하나의 scene 은 하나의 window 와 viewcontroller 들을 관리하며, 앱의 UI 인스턴스 하나를 가리키는..
-
[iOS] About the App Launch Sequence (앱 실행 시점에 일어나는 일들)iOS/🤖 App 2021. 2. 2. 06:38
1차 수정: 21.08.02 안녕하세요🐶 이번 시간에는 "About the App Launch Sequence" 앱의 실행 시점에 실행되는 코드들에 대해서 알아보겠습니다. 앱은 사용자에 의해 foreground로 실행되기도 하고, 시스템에 의해 background 로 실행되기도 하죠? print("hello, world") 와 같은 단순한 절차지향 프로그램과 달리 앱을 실행하는 것은 복잡한 단계의 과정을 거칩니다. 이 과정들 대부분은 UIKit이 자동으로 처리합니다. 앱 실행 과정 중, UIKit 은 AppDelegate 의 메서드들을 호출합니다. 프로젝트 템플릿으로 기본 제공하는 AppDelegate 클래스는 UIResponder 와 UIApplicationDelegate 프로토콜을 채택하고 있습니다...
-
Preparing Your UI to Run in the Background - Scenes - UIKitiOS/🍎 Documentation 2021. 1. 29. 18:28
관련 문서: developer.apple.com/documentation/uikit/app_and_environment/scenes " 앱이 `suspended`상태로 돌입할 때를 대비하기 " Overview 앱이 `background` 상태로 전환되는 데에는 여러 이유가 있습니다. 사용자가 `foreground` 상태인 앱을 종료하면, 앱은 `background` 상태로 진입하고, 곧 UIKit 이 앱을 `supsended`상태로 바꿉니다. 시스템은 앱을 실행하여 바로 `background` 상태로 만들 거나, 혹은 `suspended` 상태의 앱을 `background` 로 전환하여 앱이 중요한 작업을 수행하게끔 시간을 줄 수도 있습니다. 앱이 `background` 상태에 있다면, 최소한으로 작업해..
-
Preparing Your UI to Run in the Foreground - Scenes - UIKitiOS/🍎 Documentation 2021. 1. 29. 18:03
참고 자료: developer.apple.com/documentation/uikit/app_and_environment/scenes/ " 앱이 화면상에 나오기 위해 앱을 구성하는 작업 " Overview `Foreground transtition` 을 이용하여 앱의 UI 가 화면에 나올 수 있도록 준비를 해주세요. 앱이 `foreground`상태로 전환되는 경우는 보통 사용자의 동작에 반응한 결과입니다. 예를 들어, 사용자가 홈스크린에서 앱의 아이콘을 탭한다면, 시스템은 앱을 실행시키고 씬을 `foreground` 상태로 만듭니다. ' 시스템은 앱을 실행시키고 앱을 `foreground` 상태로 만듭니다. ' 라는 과정을 좀 더 자세히 다룬 문서가 있어서 정리할 예정입니다. 이 `foreground tr..