Похоже, вы путаете типы данных NS
с типами данных CF
.Методы адресной книги обычно возвращают базовые (CF
) объекты.Эти объекты являются бесплатными мостовыми соединениями, что означает, что они могут использоваться взаимозаменяемо с NS
типами.
При использовании базовых базовых объектов любой метод с именем «copy» вернет объект, который вам позже понадобитсявыпустить, используя CFRelease
.Только если вы приведете его к эквиваленту NS
, вы можете использовать - release
.
Таким образом, ваш код может быть записан в виде одного из следующих:
ABMultiValueRef phone = ABRecordCopyValue(person, kABPersonPhoneProperty);
NSString *mobilephone = (NSString *)ABMultiValueCopyValueAtIndex(phone, 0);
// other code
[mobilephone release];
или
ABMultiValueRef phone = ABRecordCopyValue(person, kABPersonPhoneProperty);
CFStringRef mobilephone = ABMultiValueCopyValueAtIndex(phone, 0);
// other code
CFRelease(mobilephone);