iOS

protocol - swift / objective-c 차이

@서비 2022. 9. 5. 15:03

 

1. swift 에서는 optional 정의가 불가 하다.

사용하려면 아래와 같은 식으로 사용해야 한다.

@objc protocol CounterDataSource {
    @objc optional func someFunc()
}

 

2. swift 에서는 protocol의 확장(extension)이 도입되었다.

 

- 정의: 기존 클래스, 구조체, 열거형 타입에 새로운 Property, Method, Initializer 등을 추가하는 것으로,

원본 타입(소스 코드)에 접근하지 못하는 타입들도 확장해서 사용할 수 있다.

 

extension CGPoint {
    func printPoint() {
        print("x: \(self.x), y: \(self.y)")
    }
}


let point: CGPoint = .init(x: 10, y: 20)
point.printPoint()

 

extension은 내용이 방대해서 따로 다루는게 나을거 같다. 업데이트 하면 별도 하단 링크 생성 예정