Arc-ObjC объекты с переменными экземпляра CF
Я думаю, что здесь я-костяная голова...
Статический анализатор жалуется в методе -(void)doSomethingInteresting:
Потенциальная утечка объекта, хранящегося в myAddressBook
Ну, конечно, это имеет смысл; я вызываю функцию create без соответствующего release. Но я не думаю, что хочу выпустить myAddressBook в конце -doSomethingInteresting, потому что я хочу, чтобы он оставался в течение всей жизни AwesomeObject пример.
AwesomeObject.h
@interface AwesomeObject : NSObject
@property (assign, nonatomic) ABAddressBookRef addressBook;
@end
AwesomeObject.m
@implementation AwesomeObject
- (void)doSomethingInteresting
{
CFErrorRef error = NULL;
ABAddressBookRef myAddressBook = ABAddressBookCreateWithOptions(NULL, &error);
[self setAddressBook:myAddressBook];
}
@end
Правка: снимок экрана прилагается

2 ответа:
Анализатор не понимает, что вы хотите присвоить сохраненную адресную книгу в свою собственность и, таким образом, не выпускать ее в конце
doSomethingInteresting.Измените свое свойство на:
@property (strong, nonatomic) id addressBook;И установите его следующим образом:
Теперь, когда вы хотите использовать свойство[self setAddressBook:CFBridgingRelease(addressBook)];addressBook, Используйте приведение(__bridge ABAddressBookRef).Кроме того, вам нужно освободить потенциальный объект
CFErrorRef, который, возможно, был создан во времяABAddressBookCreateWithOptions:if(error) { CFRelease(error); error = NULL; }