Swift)protocol interface 차이

Featured image

@

  1. 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 – 파라미터의 초기값 설정가능

  2. 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 – 선언된 모든 메소드는 구현해야 합니다.

  3. 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 – 정적 멤버를 선언할 수 없습니다.