Swift 공부 및 유용한 사이트
Swift에서는 통상적으로 이용하는 +, -, /, % 같은 산술연산자와 &&, || 같은 논리 연산자, 그리고 C에서 지원하지 않는 a..<b 나 a…b같이 값의 범위를 지정할 수 있는 범위 연산자를 지원합니다.
Swift의 String은 Foundation 프레임워크의 NSString이 bridge된 타입이기 때문에 NSString의 메소드를 String에서 캐스팅 없이 사용 가능합니다.
Swift에서는 콜렉션 타입으로 Array, Dictionary, Set 세 가지를 지원한다.
Swift에서는 while loop, if guard, switch, for-in 문 등 많은 제어문을 제공한다.
함수는 특정 작업을 수행하는 코드를 자체 포함하는 부분이다. 함수가 수행하는 작업을 식별하는 이름을 지정하면 작업을 수행하기 위해 함수가 필요할 때 호출하는데 사용할 수 있다.
클로저는 코드블럭으로 C와 Objective-C의 블럭과 다른 언어의 람다와 비슷하다. 클로저는 어떤 상수나 변수의 참조를 캡쳐해 저장할 수 있다.
열거형은 관련된 값으로 이루어진 그룹을 공통의 타입으로 선언해 type-safety를 보장하는 방법으로 코드를 다룰 수 있게 해준다.
클래스와 구조체는 프로그램의 코드를 조직화하기 위해 일반적으로 사용한다.
프로퍼티는 클래스, 구조체, 열거형과 관련한 값이다. 프로퍼티의 종류에는 저장 프로퍼티와 계산 프로퍼티가 있다. 저장 프로퍼티는 말 그대로 값을 저장하고 있는 프로퍼티이고, 계산 프로퍼티는 값을 저장하고 있지 않고 특정하게 계산한 값을 반환해 주는 프로퍼티이다.
특정 타입의 클래스, 구조체, 열거형과 관련된 함수를 메소드라 한다.
클래스, 구조체 그리고 열거형에서 스크립트를 정의해 사용할 수 있다.
클래스는 메소드, 프로퍼티와 다른 특징을 다른 클래스로 부터 상속할 수 있다.
초기화는 클래스, 구조체, 열거형 인스턴스를 사용하기 위해 준비 작업을 하는 단계이다. 이 단계에서 각 저장 프로퍼티의 초기값을 설정한다. 초기화 과정은 Initializer를 정의하는 것으로 구현할 수 있다. Swift의 Initializer는 값을 반환하지 않는다.
Deinitializer는 초기자와 반대로 클래스 인스턴스가 소멸되기 직전에 호출된다. 초기자는 선언 키워드로 init 을 사용하는 Deinitializer는 선언을 위해 deinit 키워드를 사용한다. Deinitializer는 오직 클래스 타입에서만 사용 가능하다.
옵셔널 체이닝은 nil일 수도 있는 프로퍼티, 메소드 그리고 서브스크립트에 질의를 하는 과정을 말한다. 만약 옵셔널이 프로퍼티나 메소드 혹은 서브스크립트에 대한 값을 갖고 있다면 그 값을 반환하고 만약 값이 nil이면 nil을 반환한다.
타입캐스팅은 인스턴스의 타입을 확인하거나 인스턴스를 같은 계층에 있는 다른 Superclass나 Subclass로 취급하는 방법이다. 타입캐스팅에는 is 와 as 두 연산자를 사용한다. 타입캐스팅을 이용하면 특정 프로토콜을 따르는지 확인할 수 있다.
프로그램 실행시 에러가 발생하면 그 상황에 대해 적절한 처리가 필요하다. 이 과정을 에러 처리라고 부른다.
열거형은 특정 구조체나 클래스의 기능을 처리하기 위해 자주 사용된다. 이와 비슷하게 특정 문맥에서 좀 더 복잡한 타입을 위해 사용할 수 있는 유틸리티 클래스나 구조체를 정의할 수 있다. Swift에서는 이 기능을 위해 중첩 타입을 지원한다.
익스텐션을 이용해 클래스, 구조체, 열거형 혹은 프로토콜 타입에 기능을 추가할 수 있다.
프로토콜은 특정 기능 수행에 필수적인 요수를 청의한 청사진이다. 프로토콜을 만족시키는 타입을 프로토콜을 따른다고 말한다. 프로토콜에 필수 구현을 추하거나 추가적인 기능을 더하기 위해 프로토콜을 확장하는 것이 가능하다. 프로토콜 문법 프로토콜의 정의는 클래스
제네릭은 더 유연하고 재사용 가능한 함수와 타입의 코드를 작성하는 것을 가능하게 만들어준다.
Swift에서는 앱의 메모리 사용을 관리하기 위해 ARC를 사용한다. 자동으로 참조 획수를 관리하기 때문에 대부분의 경우에 개발자는 메모리 관리에 신경 쓸 필요가 없고 ARC가 알아서 더이상 사용하지 않는 인스턴스를 메모리에서 해지한다.
기본적을 Swift는 코드가 비정상적으로 동작하는 것을 막는다.
접근제어는 특정 코드의 접근을 다른 소스파일이나 모듈에서 제한하는 것이다. 이렇게 접근제어를 함으로써 특정 코드의 세부적인 구현을 감추고 딱 필요한 만큼 공개해 다른 곳에서 사용할 수 있도록 한다.
Swift에서도 여러 비트 연산자를 지원한다.