본문 바로가기

Swift 공식 가이드/Swift 330

Extensions Apple 제공 Swift 프로그래밍 가이드(3.0.1)의 Extensions 부분을 공부하며 정리한 글입니다. 개인적인 생각도 조금 들어가있습니다. 들어가며확장Extension을 통해 기존 클래스, 구조체, ENUM, 프로토콜 타입에 새로운 기능을 더할 수 있다. 원본 소스 코드에 접근할 수 없는 타입도 확장할 수 있다. (이렇게 기존 코드를 건드리지 않고 기능을 확장하는 것을 retroactive modeling이라고 부르는 것 같다) Swift의 확장은 Objective-C에서의 카테고리와 유사한데, 다른 점이 있다면 확장은 개별적으로 이름을 따로 가지지 않는다는 것이다. 확장을 통해 기존 타입에 다음과 같은 것들을 적용할 수 있다computed 인스턴스 프로퍼티, computed 타입 프로퍼티 추.. 2017. 3. 23.
Nested Types Apple 제공 Swift 프로그래밍 가이드(3.0.1)의 Nested Types 부분을 공부하며 정리한 글입니다. 개인적인 생각도 조금 들어가있습니다. 들어가며ENUM은 특정 클래스나 구조체의 기능functionality을 돕기 위해 생성되곤 한다. 이와 비슷하게, 복잡한 타입의 context에서는 유틸리티 클래스와 구조체를 정의하는 것이 편리하다. 이를 위해 nested type(중첩된 타입)이라는 것이 있다. 특정 타입의 정의 안에서 ENUM, 클래스, 구조체 등을 중첩하여 정의하는 방식으로 사용한다.특정 타입의 정의를 둘러싼 대괄호({}) 안에서 새로운 타입을 중첩하여 정의할 수 있고, 원하는 만큼 중첩할 수 있다. (중첩 안의 중첩이 계속 가능하다는 말) Nested Type 실제로 써보기블랙잭.. 2017. 3. 23.
Type Casting Apple 제공 Swift 프로그래밍 가이드(3.0.1)의 Type Casting 부분을 공부하며 정리한 글입니다. 개인적인 생각도 조금 들어가있습니다. 들어가며타입 캐스팅Type casting은 인스턴스의 타입을 체크하거나, 인스턴스의 타입을 자기 클래스의 슈퍼클래스 타입이나 서브클래스 타입처럼 다루기 위해 쓰인다.Swift에서는 is나 as 연산자를 사용하여 값의 타입을 체크하거나 다른 타입으로 변환하는 방식으로 타입 캐스팅이 이루어진다.타입 캐스팅은 특정 타입이 프로토콜을 따르고 있는지 체크할 때도 쓰인다. (Checking for Protocol Conformance 에서 자세히 다룹니다) 타입캐스팅을 위한 Class Hierarchy 정의타입 캐스팅을 통하여 특정 클래스 인스턴스의 타입을 체크하.. 2017. 3. 23.
Error Handling Apple 제공 Swift 프로그래밍 가이드(3.0.1)의 Error Handling 부분을 공부하며 정리한 글입니다. 개인적인 생각도 조금 들어가있습니다. 들어가며에러 핸들링Error handling은 에러 상황에 반응하고 에러를 복구하는 Process를 말한다. Swift는 복구할 수 있는 에러Recoverable error를 런타임 동안 throwing, catching, propagating, manipulating 할 수 있는 방법을 제공한다.항상 완벽한 실행이나 유용한 아웃풋을 낸다고 보장할 수 없는 오퍼레이션들이 있기 마련이다. 이런 오퍼레이션이 실패했을 때, 그 실패의 원인을 알아야 코드에서 적절한 대응을 할 수 있다. 예를 들어 디스크 파일의 데이터를 읽고 처리하는 오퍼레이션을 생각해보자.. 2017. 3. 18.
Optional Chaining Apple 제공 Swift 프로그래밍 가이드(3.0.1)의 Optional Chaining 부분을 공부하며 정리한 글입니다. 개인적인 생각도 조금 들어가있습니다. 들어가며옵셔널 체이닝Optional chaining은 Optional 프로퍼티, 메서드, 서브스크립트에 대고 질의querying하거나 호출하는 프로세스를 가리킨다. 옵셔널은 값이 있거나 nil이거나 둘 중 하나일텐데, 옵셔널이 값을 가지고 있다면 호출은 성공하고, 옵셔널이 nil이라면 호출은 nil을 리턴한다. 여러개의 쿼리가 한 번에 묶일chained 수 있으며 전체 체인 중 하나라도 nil이 되면 전체 체인이 실패한다. Swift에서의 옵셔널 체이닝은 Objective-C에서 nil에 메세지를 보내는 것과 유사하다. 다른 점은 Swift에서.. 2017. 3. 18.
Automatic Reference Counting (ARC) Apple 제공 Swift 프로그래밍 가이드(3.0.1)의 Automatic Reference Counting 부분을 공부하며 정리한 글입니다. 개인적인 생각도 조금 들어가있습니다. 들어가며Swift는 Automatic Reference Counting (ARC) 을 통해 앱의 메모리 사용량을 추적하고 관리한다. ARC는 클래스의 인스턴스가 더이상 필요하지 않다고 판단하면 자동으로 해당 인스턴스의 메모리를 해제해준다. 대부분의 경우 잘 동작하기 때문에 그냥 맡겨놔도 되지만, 그럼에도 개발자가 신경써야 할 몇 가지 케이스가 있다. 이번 챕터에서는 그런 케이스에 대해서 알아보고, ARC가 앱 메모리 관리를 어떻게 하고 있는지도 알아보자. 레퍼런스 카운팅은 오직 클래스의 인스턴스에만 적용된다. 구조체와 ENU.. 2017. 3. 14.