-
Protocol에서 Optional 선언iOS 2020. 3. 4. 16:06728x90
protocol에서 optioanl 을 사용하면 다음과 같은 오류를 만나게 됩니다.
'optional' can only be applied to members of an @objc protocol
Swift document를 보면,
Swift는 optional을 사용하려면 반드시 @objc 를 붙여주라고 하고 있네요,
class는 Objective-C 를 상속받거나 @objc가 붙은 클래스에서만 사용이 가능하니 당연히 struct나 enum에서는 사용할 수 없겠죠?swift는 protocol에서 optioanl을 지원하지 않으니,
대신 @objc 를 지원하는 @objc 를 사용하는 것이 가장 쉬운 방법이 되겠습니다.@objc protocol CounterDataSource { @objc optional func increment(forCount count: Int) -> Int @objc optional var fixedIncrement: Int { get } }
이런식으로 사용하면 되겠군요 :)
하지만 꼭 순수 Swift 문법을 사용하고 싶다면, protocol을 extension해서 비어있는 함수를 구현을 해주는 방법이 있습니다.
protocl MyProtocol: class { func myFunc() } extension MyProtocol { func myFunc() { ... } }
다음과 같이 한다면 MyProtocol을 상속할 때 꼭 myFunc을 구현해주지 않아도 된답니다.
감사합니다 :)
'iOS' 카테고리의 다른 글
TextView 라인 수 구하기 (0) 2020.03.16 Bundle (0) 2020.03.13 포토샵, 일러스트 웹, 앱용 이미지 @2x @3x 변환 (0) 2020.03.03 iOS) simulator에서 API error (0) 2020.03.01 iOS) Realm Numeric Optional (0) 2020.02.28