Swift 공식문서 읽기...Day20

김민종·2021년 9월 7일
0

Swift Doc

목록 보기
20/26

Delegation

위임은 클래스와 구조체에 특정 행위에 대한 책임을 넘길 수 있게 해준다.

Adding Protocol Conformance with an Extension
익스텐션은 새로운 프로퍼티, 메소드, 서브스크립트를 이 존재하는 타입에 추가할 수있다. 그러므로 프로토콜이 요구하는 어떤 타입을 추가할 수 있다. 또 원래 값의 접근권한이 없어도 프로토콜에 접근할 수 있다.

Conditionally Conforming to a Protocol
제너릭 타입은 특정 조건을 만족시킬 때 프로토콜을 따르도록 제한할 수 있다.

Declaring Protocol Adoption with an Extension
프로토콜 충족을 위한 조건을 갖추었지만 아직 선언을 하지 않았을 때는 그 선언을 빈익스텐션으로 선언할 수 있다.

Adopting a Protocol Using a Synthesized Implementation
스위프트는 자동으로 일치성과 비교가능성을 다수의 단순한 예제에서 확인 가능하다.이런 합성코드의 사용으로 이용자는 코드를 반복해서 쓰지 않아도 된다.

Collections of Protocol Types
프로토콜을 다양한 타입 array, dictionary등 에 넣기위해 사용가능하다.

Protocol Inheritance
프로토콜은 하나 이상의 프로토콜로 상속이 가능하다.문법으로는 클래스 상속과 비슷하지만 프로토콜의 다중상속은 콤마로 구분한다.

Class-Only Protocols
구조체와 열거형이 아닌 오직 클래스에서만 사용가능한 프로토콜을 선언하기 위해 AnyObject프로토콜을 추가한다.

Protocol Composition
프로토콜의 합성은 동시에 여러 프로토콜을 따르는 타입을 선언할 수 있다. 프로토콜 합성을 통해 여러개의 프로토콜을 하나의 프로토콜로 만들 수 있다. &기호를 통해 원하는 만큼의 많은 프로토콜들을 하나로 묶을 수 있다.

Checking for Protocol Conformance

  • is연산자를 통해 어떤 프로토콜을 따르는지 true or false로 확인 가능하다.
  • as?는 옵셔널 타입으로 다운캐스트하고 따르지 않는 경우 nil을 반환한다.
  • as!는 강제적으로 특정 프로토콜을 따르게 한다. 다운캐스틷 실패 시 nil값을 반환한다.

Optional Protocol Requirements
프로토콜 선언 시 필수 구현이 아닌 선택적 조건을 정의할 수 있다. 키워드는 @obj를 붙힌다. 이는 오직 클래스타입에서만 사용할 수있고 구조체나 열거형에서는 사용할 수 없다.

profile
신입 ios개발자입니다!

0개의 댓글