2009-06-01 3 views
2

NS와 CF 유형간에 수신자 부담 브리징에 대한 문제가 있습니까?수신자 부담 브리징 수신자

내가 잘못하고 있는지 확실하지 않지만 NS 배열 내에서 ABAddressID와 같은 CF 불투명 유형을 사용할 수 없습니다.

+0

당신이 몇 가지 코드를 보일 수 있는가? 나는 "NSArray의 내부를 사용할 수 없다"는 의미를 수집 할 수 없습니다. 어레이에 추가 할 수 없습니까? 일단 그렇게하면 사용할 수 없습니까? – catsby

답변

8

'gotchas'가 너무 많지 않습니다. 그러나 이것은 C 기반 언어이므로 모든 항목이 CFType에 종속되지는 않습니다. 예를 들어 ABRecordID는 실제로는 32 비트 정수입니다. CFType이 아닙니다. 배열에 ABRecordID를 추가하려면 다음과 같이하면됩니다 :

NSMutableArray * newArray = [NSMutableArray array];

ABRecordID someID = 24875247; // 당신은 어떤 호출에서 이것을 어딘가에 가져옵니다.

[newArray addObject : [NSNumber numberWithInt : someID]]; 다시 수를 할 때 // 그런 다음 나중에의 NSNumber

에 INT으로 바꾸어 배열에 ABRecordID을 추가

ABRecordID thatID = [[newArray objectAtIndex : 0]있는 intValue] // 숫자를 검색 한 다음 int 값을 요청합니다.

CFType에 대한 문서를 읽는다면, 그것은 항상 그것이 NS * 대응 전화국과 무료로 연결되어 있는지를 말할 것입니다.

docs : "CFNumber는 코코아 파운데이션의 NSNumber와"수신자 부담 브리지 "입니다. 즉, Core Foundation 유형은 함수 또는 메소드 호출에서 브리지 된 Foundation 객체와 상호 교환 가능합니다. NSNumber * 매개 변수를 보는 방법으로 CFNumberRef를 전달할 수 있으며 CFNumberRef 매개 변수가있는 함수에서 NSNumber 인스턴스를 전달할 수 있습니다.이 사실은 NSNumber의 구체적인 하위 클래스에도 적용됩니다. 수신자 부담 브리징에 대한 자세한 내용은 신청서에있는 코코아를 참조하십시오. "

그러나 C의 int는 CFNumber가 아닙니다. 도움이

희망,

--Tom

+0

감사합니다. Tom - 많이 도움이됩니다. – chaostheory

관련 문제