post-custom-banner

참고 - Swift 공식문서

Protocol은 method, property 등의 blueprint(청사진)으로 정의된다. Swift에서 Protocol은 Class, Structure, Enumeration 등에서 adopted(채택)되며, Protocol에서 명시된 variable이나 function이 실제로 구현된다. 어떠한 타입이라도 Protocol의 명세사항이 만족된다면, 해당 Class, Structure, Enumeration 등은 Protocol을 conform(준수)한다고 말한다.

Protocol syntax

protocol MyProtocol {
// Protocol requeriments
}

struct MyStruct: MyProtocol, AnotherProtocol, ThirdProtocol {
//structure implementation here
}

enum MyEnum: MyProtocol, AnotherProtocol, ThirdProtocol {
//enum implementation here
}

class MyClass: MyBaseClass, MyProtocol, AnotherProtocol, ThirdProtocol {
//class implementation here
}

Note
Protocol은 타입이므로, FullyNamed와 RandomNumberGenerator 등과 같이 대문자로 시작하는 것이 좋다(Swift 공식문서)

Property Requirements

Property requirements는 항상 variable property로 정의된다. 이때, Prefix는 var키워드로 한정된다. Gettable과 Settable Properties는 {get set}으로 해당 type이 정해진 이후에 작성된다. 만약, Gettable 또는 Settable만 가능하다면, {get} 또는 {set}으로 작성한다

protocol SomeProtocol {
    var mustBeSettable: Int { get set }
    var doesNotNeedToBeSettable: Int { get }
}

Method Requirements

Protocol은 특정 기능을 수행하는 Instance methodType method를 요구할 수 있다. Type method는 func 키워드 앞에, static을 붙여준다.

protocol SomeProtocol {  // instance method
    func random() -> Double
}

protocol RandomNumberGenerator { // type method
   static func random() -> Double
}
profile
RTFM
post-custom-banner

0개의 댓글