본문 바로가기

Swift 공식 가이드68

Protocols (3) Apple 제공 Swift 프로그래밍 가이드(3.0.1)의 Protocols 부분을 공부하며 정리한 글입니다. 개인적인 생각도 조금 들어가있습니다. 프로토콜 3편입니다. Objective-C에 비해 스위프트에서는 프로토콜이 강력해졌는데요. 예를 들면 프로토콜 확장을 통해서 그 프로토콜을 따르는 녀석들에게 메서드를 제공해줄 수도 있습니다. 이번 시간에는 프로토콜 합성, 프로토콜을 따르는지 체크, 프로토콜 확장하는 법을 알아보고, 이런 것들을 통해 우리가 무엇을 할 수 있는지 살펴보겠습니다.1, 2편을 아직 안 읽으셨다면 먼저 읽어보세요.Protocols 1편 링크 > http://wlaxhrl.tistory.com/57Protocols 2편 링크 > http://wlaxhrl.tistory.com/58 프.. 2017. 3. 25.
Protocols (2) Apple 제공 Swift 프로그래밍 가이드(2.2)의 Protocols 부분을 공부하며 정리한 글입니다. 개인적인 생각도 조금 들어가있습니다. 프로토콜 2편입니다. 이번 시간에는 Delegation부터 시작합니다. 1편을 아직 안 읽으셨다면 먼저 1편을 읽어보세요. Protocols 1편 링크 > http://wlaxhrl.tistory.com/57 Delegation딜리게이션은 클래스/구조체가 자신의 책임 중 일부를 다른 타입의 인스턴스에게 떠넘길 수 있게 해주는(=위임할 수 있게 해주는 = hand off = delegate) 디자인 패턴이다.딜리게이션 패턴을 구현하려면, 다른 타입에게 위임할 책임(기능)을 캡슐화하고 있는 프로토콜을 정의해야 한다. 그 프로토콜을 따르는 타입(conforming t.. 2017. 3. 25.
Protocols (1) Apple 제공 Swift 프로그래밍 가이드(3.0.1)의 Protocols 부분을 공부하며 정리한 글입니다. 개인적인 생각도 조금 들어가있습니다. 들어가며프로토콜은 특정 task나 functionality를 위한 메서드, 프로퍼티, 그 외 요구사항들의 청사진을 정의한다. 클래스, 구조체, ENUM은 프로토콜을 적용하여 그 요구사항들의 실제 구현을 제공한다. 어떤 타입이 특정 프로토콜의 요구사항을 만족시키면, 그 타입이 프로토콜을 따른다conform고 말한다.필요 시 프로토콜을 확장하여 그것을 따르는 타입에게 도움이 되는 기능을 제공하거나 할 수도 있다. 문법프로토콜의 정의 문법은 클래스, 구조체, ENUM과 매우 유사하다. protocol SomeProtocol { // 프로토콜 정의가 여기에 온다 }.. 2017. 3. 23.
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.