클로저 표현식은 중괄호 블록({})로 둘러쌓인 독립적이고 실행가능한 코드조각이다.참조 타입이다.변수 / 상수 등으로 저장할 수 있고 전달인자나 반환타입으로 사용될 수 있다.클로저는 함수나 클로저 표현식과 같은 코드 블록이 주변의 하나 이상의 변수와 결합된 것이다.클로저
\#selector 함수의 매개변수로 다른 함수를 사용할때 붙이는 키워드. callback 함수랑 유사한 개념이다. 본래 objective-c에서는 @selector로 쓰였지만 이것이 스위프트로 넘어오며 #selector로 변경되었다고 한다 함수명 뒤에 매개변수도 들어
Any는 스위프트의 모든 데이터 타입을 사용할 수 있다는 뜻으로 만약 어떤 변수나 상수의 타입이 Any로 되어 있다면 어떤 종류든지 값을 지정할 수 있다.AnyObject는 Any보다는 조금 더 한정된 의미로 클래스의 인스턴스만 할당 가능하다.위 두가지 타입은 리스트에
앱은 서버와 통신을 할때 보통 json 형식으로 데이터를 주고 받는다.보통 위와 같은 형태인데 흔히 파이썬이나 딕셔너리와 유사한 Key-Value 의 구조를 갖는다.스위프트에서는 데이터를 인코딩, 디코딩 할 수 있는 프로토콜을 Codable로 정의했다.Codable 타
Escaping 클로저는 클로저가 함수의 인자로 전달됐을 때, 함수의 실행이 종료된 후 실행되는 클로저. Non-Escaping 클로저는 이와 반대로 함수의 실행이 종료되기 전에, 즉 함수 내부에서 실행되는 클로저.이런 식으로 선언되어 있으면 1\. runClosur
우리는 흔히 UIKit를 이용하여 개발할 때 버튼이나 여러 요소들의 사용자 이벤트를 처리하기 위해 Target Action 디자인패턴의 원리를 이용해 다음과 같은 코드를 사용한다.헌데 실제로 어떻게 프로그램의 런타임에서 action이 실행될 수 있는 것일까?그 원리를
스위프트의 구조체는 여타의 C 기반 언어의 구조체에 비해 훨씬 강력하다. 그런데 클래스는 그러면 언제 사용해야 할까?애플의 Swift Programming Language Guide에서는 다음과 같이 제시하고 있다기본적으로는 구조체를 사용하라. \- Swift의 구조
접두사로 NS가 붙은 타입은 NSString, NSArray, NSSet, NSDictionary 등등 여러가지가 있다.이들은 NextStep의 줄임말로, 예전 Objective-C 시절의 타입을 일컫는다.구조체로 구현되어 있다.Foundation 프레임워크를 impo
스위프트에서 리스트를 뒤집는 것은 Swift Standard Library의 .reversed() 를 활용할 수 있다.놀랍게도 이 메서드는 시간복잡도가 O(1)이다. 왜냐하면 이건 lazy이고, 원래 컬렉션을 거꾸로 뒤집는 뷰를 생성하기만 하기 때문이다. 정확히 말하
함수가 일급시민으로서 상수나 변수에 함수참조를 할당할 수 있다. 그리고 이렇게 참조해두고 나중에 원할 때 호출할 수 있고, 다른 함수를 참조하도록 할 수도 있다.프로퍼티도 이와 마찬가지로 값을 바로 꺼내오는 것이 아니라 어떤 프로퍼티의 위치만 참조하도록 할 수 있다.
Swift 에는 흥미로운 부분이 있다. 바로 Copy-On-Write, 사실 이것은 스위프트 만의 특징은 아니고 여러 다른 언어들도 가지고 있는 전반적인 특징이다.한 줄로 말하자면, 어떤 값의 복사가 일어날 때, 실제로는 그 값을 복사하는게 아닌 참조한다. 그리고 원본