Есть не так много "гуч". Но это язык на основе Си, поэтому не каждый элемент происходит от CFType. Например, ABRecordID на самом деле является просто 32-битным целым числом. Так что это не CFType. Чтобы добавить ABRecordID в массив, вы должны сделать что-то вроде этого:
NSMutableArray * newArray = [массив NSMutableArray];
ABRecordID someID = 24875247; // вы получаете это где-то из звонка
[newArray addObject: [NSNumber numberWithInt: someID]]; // добавляет ABRecordID в массив, помещая int в NSNumber
Потом, когда вы хотите вернуть номер:
ABRecordID thatID = [[newArray objectAtIndex: 0] intValue]; // получить номер, затем запросить его значение int.
Если вы прочитаете документацию по CFType, он всегда скажет, является ли он бесплатным по мосту с каким-то NS * аналогом.
Цитата из документации:
«CFNumber« соединен по мосту без взимания платы »со своим аналогом Cocoa Foundation, NSNumber. Это означает, что тип Core Foundation взаимозаменяем в вызовах функций или методов с мостовым объектом Foundation. Следовательно, в методе, в котором вы видите параметр NSNumber *, вы можете передать CFNumberRef, а в функции, где вы видите параметр CFNumberRef, вы можете передать экземпляр NSNumber. Этот факт также применим к конкретным подклассам NSNumber. См. Интеграция углерода и какао в вашем приложении для получения дополнительной информации о платных звонках. свободный мост. "
Но int в C определенно НЕ является CFNumber.
Надеюсь, это поможет,
- Том