我有一个访问地址簿的类,如果我有以下代码,那么我会从分析器中收到警告,一个是 init 方法中的泄漏,另一个是说该类在释放对象时不拥有该对象释放。
我认为第二个警告是由于将通讯簿引用声明为分配?但它不可能使它变得强大,因为这会产生一个编译警告。将通讯簿作为财产处理的正确方法是什么?
@property (assign, nonatomic) ABAddressBookRef addressBook;
..
- (id) init
{
self = [super init];
if (self)
{
if (ABAddressBookCreateWithOptions)
{
// iOS 6 onwards
self.addressBook = ABAddressBookCreateWithOptions(NULL, NULL);
}
else
{
// < iOS 6
self.addressBook = ABAddressBookCreate();
}
}
return self;
}
- (void) dealloc
{
if (self.addressBook)
{
CFRelease(self.addressBook);
}
}