[swift] Objective-C와 Swift에서의 프로토콜 상호 운용성

Objective-C와 Swift는 각기 다른 언어지만, Cocoa 및 Cocoa Touch 프레임워크를 통해 서로 호환되는 방식으로 상호 운용할 수 있습니다. 프로토콜은 두 언어 간의 상호 운용성을 지원하는 데 중요한 역할을 합니다. 이 문서에서는 Objective-C와 Swift에서의 프로토콜 상호 운용성에 대해 살펴보겠습니다.

Objective-C에서의 프로토콜 정의

Objective-C에서의 프로토콜은 @protocol 키워드를 사용하여 정의됩니다. 프로토콜은 클래스가 채택할 수 있는 메서드, 속성 및 다른 요구 사항을 정의합니다. 예를 들어, 다음은 Objective-C에서의 프로토콜 정의의 예입니다.

@protocol MyProtocol
- (void)doSomething;
@property (nonatomic, strong) NSString *name;
@end

Objective-C에서의 프로토콜 채택

Objective-C 클래스에서 프로토콜을 채택하기 위해서는 <MyProtocol> 구문을 사용하여 프로토콜을 선언해야 합니다.

@interface MyClass : NSObject <MyProtocol>
@end

Swift에서의 프로토콜 정의 및 채택

Swift에서의 프로토콜은 protocol 키워드를 사용하여 정의됩니다. Objective-C와는 다르게 Swift의 프로토콜은 메서드 및 속성의 기본 구현을 포함할 수 있습니다.

protocol MyProtocol {
    func doSomething()
    var name: String { get set }
}

Swift 클래스에서 프로토콜을 채택하려면 Objective-C와 유사한 방식을 사용합니다.

class MyClass: NSObject, MyProtocol {
    // 클래스 구현
}

Swift에서의 Objective-C 프로토콜 상호 운용성

Swift는 Objective-C와의 상호 운용성을 제공하기 위해 @objc 특성과 @objc protocol을 사용합니다. Objective-C에서 정의된 프로토콜을 Swift에서 사용해야 할 때, @objc 특성을 붙인 프로토콜을 선언합니다.

@objc protocol MyObjectiveCProtocol {
    // 프로토콜 내용
}

그리고 Swift 클래스에서 Objective-C 프로토콜을 채택할 때에는 @objc 특성을 붙여야 합니다.

class MySwiftClass: NSObject, MyObjectiveCProtocol {
    // 클래스 내용
}

결론

Objective-C와 Swift에서의 프로토콜 상호 운용성을 달성하기 위해서는 각 언어에서의 프로토콜 정의 및 채택 방식을 이해해야 합니다. Swift에서 Objective-C 프로토콜을 사용할 때에는 @objc 특성을 주의 깊게 적용해야 합니다. 이러한 이해와 주의를 통해 Objective-C 및 Swift 기반의 프로젝트에서의 프로토콜 상호 운용성을 보다 나은 수준으로 달성할 수 있습니다.

더 자세한 내용은 Apple의 공식 문서를 참조하세요.