1

我正在使用以下代码在我的应用程序中初始化通讯录:-

@property(nonatomic,assign) ABAddressBookRef addressBookRef;
self.addressBookRef=ABAddressBookCreateWithOptions(NULL, NULL);

但是,xcode 分析器给了我以下信息:-

call to function 'ABAddressBookCreateWithOptions' returns a Core Foundation Object with a +1 retain count

现在,据我所知,我可以通过以下两种方法“删除”上述警告:-

  • addressBookRef使用释放CFRelease
  • 而不是self.addressBookRef,_addressBookRef在第二个语句中使用。

但是,哪一个会是更好的方法,为什么?

4

1 回答 1

2

所有名称中的 CoreFoundation API 都会create返回一个保留计数为 +1 的 CF 对象。然后,您需要release在完成后使用新的 CF 对象。您的命名示例:

CFRelease(self.addressBookRef);

我也强烈建议阅读这个答案:iOS 6 Address Book not working?

于 2013-09-13T00:19:38.107 回答