2009-04-30 4 views
31

지난 몇 주 동안 iPhone 개발 및 Objective-C에 대한 새로운 경험으로 저는 CF와 NS 프레임 워크 사이에 수많은 수신자 부담 전화가있었습니다.무료 전화 번호부

한 가지 특별한 예가 CFStream과 NSStream입니다.

이러한 모든 교량을 문서화하고 사용하는 방법에 대한 자료가 있습니까? 한 유형의 객체에서 다른 유형의 객체로 캐스팅하는 것처럼 간단합니까?

저는 현재 iPhone SDK 내에서 엄격하게 허용되지 않는 NSStream 호출을 사용하고 있으며 CFStream 호출을 사용해야 함을 알고 있습니다.

편집 : how TFB works

+2

이 주제에 대한 훌륭한 블로그 게시물이 있습니다. http://ridiculousfish.com/blog/archives/2006/09/09/bridge/를 확인하십시오. 더 잘 이해할 때까지는 수신자 부담 브리징에 대해 걱정했습니다. – Mark

답변

37

수신자 부담 브리징에 대한 유용한 문서에서는 데이터 구조가 교환 할 수 있다는 것을 의미한다. 그것은 캐스팅만큼이나 간단합니다 - 그것은 "수신자 부담"부분입니다. 어느 곳에서나 다리의 한쪽면에서 유형을 사용할 수 있습니다. 다른 쪽 다리를 사용할 수 있습니다. 예를 들어 CFString을 만든 다음 NSString 메시지를 보내거나 NSArray를 만들고 배열을 CFArray 함수에 전달할 수 있습니다.

Apple은 list of the supported toll-free bridged types을 사이트에 보관합니다.

+1

[무료 브리지 데이터 유형] (http://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFDesignConcepts/Articles/tollFreeBridgedTypes.html#//apple_ref/doc/uid/20002401) 링크가 업데이트되었습니다. -767858) – 0xced

+0

흥미 롭습니다. 그들은 CFNullRef와 NSNull을 열거하지 않습니다. – user102008

+0

@ user102008 : 그렇습니다. 왜 그 둘을 인정하기를 꺼리는 이유인지 모르겠군요. 그들은 CFNull의 AFAIK 소개 이후로 연결되었습니다. – Chuck

4

재미있는 이름이지만 수신자 부담 브리징은 CoreFoundation 클래스의 매우 멋진 기능입니다. 기본적으로 CoreFoundation 클래스와 NextStep 클래스 (같은 이름의 CFString < -> NSString, CFData < -> NSData, CFDictionary < -> NSDictionary ...) 사이에서 캐스트 할 수 있다는 사실이 가장 중요합니다.)

| K <

관련 문제