У меня есть следующий класс, который является оберткой вокруг ABPerson (ABRecordRef):
@interface Recipient : NSObject {
ABRecordRef person;
}
- (id)initWithPerson:(ABRecordRef)person;
@end
@implementation
- (id)initWithPerson:(ABRecordRef)_person {
if(self = [super init]) person = CFRetain(_person);
return self;
}
- (void)dealloc {
if(person) CFRelease(person);
[super dealloc];
}
@end
Я не учел некоторые методы, но они не имеют отношения к этому вопросу.
Все работает нормально, за исключением того, что я получаю EXC_BAD_ACCESS
в строке if(person) CFRelease(person);
. Почему это происходит? Я не звоню CFRelease или CFRetain вообще нигде в моем приложении.
Редактировать, еще одно примечание: если я добавлю это прямо перед строкой CFRelease:
NSLog(@"retain count is %d", CFGetRetainCount(person));
печатает retain count is 1