1 min to read
Swift)protocol interface 차이
@
- Swift의 protocol은 파라미터에 기본 값을 지정할 수 없습니다.
protocol TestProtocol { var number: Int = 100 ————————> X func getNumber() -> Int func setNumber(num: Int) }
error: Initial value is not allowed here
protocol – 파라미터의 초기값 설정불가
interface – 파라미터의 초기값 설정가능 - Swift의 protocol의 optional 메소드 설정
@objc protocol MathProtocol { func add(a: Int, b: Int) @objc optional func subtract(a: Int, b: Int) } class MathClass: MathProtocol { internal func add(a: Int, b: Int){ print(a + b) } }
optional로 선언된 메소드는 클래스에서 구현하지 않아도 됩니다.
protocol – optional이란 키워드를 통해서 선택적으로만 구현가능합니다.
interface – 선언된 모든 메소드는 구현해야 합니다. - static 정적 멤버 정의
@objc protocol mathProtocol { func add(a: Int, b: Int) @objc optional func subtract(a: Int, b: Int) static func round(a: CGFloat) } class MathClass: MathProtocol { internal static func round(a: CGFloat) { print(round(a: a) } internal func add(a: Int, b: Int){ print(a + b) } }
protocol – 정적 멤버를 선언할 수 있습니다.
interface – 정적 멤버를 선언할 수 없습니다.
Comments