브릿징
Swift의 많은 기본 타입들은 Objective-C의 파운데이션 타입에 대응되는 것들이 있고 (e.g. String <-> NSString
) 이렇게 카운터파트가 존재하는 타입들은 파운데이션타입으로 브릿징된다. 브릿징은 Objective-C 타입이 Swift 타입으로 행동하거나 혹은 반대로 Swift 타입이 Objective-C 타입처럼 행동하여 이 둘을 상호간에 바꿔쓸 수 있음을 말한다. 다시 말해 파운데이션 API를 사용하면서 NSString
을 사용해야 할 때 String
을 쓰거나 반대로 Swift 함수/메소드 호출 시 String
을 써야 할 때 NSString
을 쓰는 것이 허용된다는 말이다.
Swift는 어떤 Objective-C 타입들을 자동으로 Swift 타입으로 변환하며, 그 반대의 동작도 자동으로 수행합니다. 이렇게 Objective-C와 Swift 사이에서 전환되는 타입들을 “bridged types”라 부릅니다. 예를 들어, Swift 코드에서 NSString
파라미터를 요구하는 Objective-C API에 String
타입의 값을 넘겨줄 수 있습니다. 또한 많은 코코아 프레임워크들은 API를 좀 더 Swift 스럽게 새로 정의했습니다. 예를 들어 NSCoder
의 decodeObjectOfClass(_:forKey:)
는 Swift의 제네릭 타입을 통해 보다 강한 타입시그니처를 갖게 됐습니다.
사실 이 브릿징은 Objective-C에 익숙하다면 낯선 개념은 아니다. 코코아에는 Objective-C가 아닌 C로 제작된 코어 파운데이션 프레임워크가 있고, 이미 NS*
클래스들은 CF*
타입들과 브릿징되고 있다. 더 보기 »(Swift) Objctive-C와 Swift 타입의 브릿징