谁能告诉我为什么这是方法给我泄漏?我一直在寻找它的历史,并不知道为什么它泄漏。泄露的对象是ContactOperations
。 EventType是Malloc和Release。我以为init
可能是错的?Objective-C泄漏
联系控制器
ContactOperations *contactOps = [[ContactOperations alloc] initWithDatabase:database];
if ([contactOps applicationIsOwner])
[contactOps startOperations];
[contactOps release];
仪器说,ALLOC是给我的泄漏...
联系运营
ContactOperations
- (id)initWithDatabase:(Database*)aDatabase
{
if (self = [super init])
{
database = [aDatabase retain];
parameter = [[Parameter alloc] init];
parameter.database = aDatabase;
//addressBook = ABAddressBookCreate();
}
return(self);
}
-(void)dealloc
{
[database release];
[parameter release];
//CFRelease(addressBook);
}
您是否尝试过从Xcode内部进行静态分析? – trojanfoe 2012-02-21 09:20:39
'contactOps'是否保留在' - [ContactOperations startOperations]'中?除此之外,您发布的代码中没有泄漏。 – Costique 2012-02-21 09:24:22
愚蠢的问题:如果在发布后将'contactOps'设置为'nil',它是否仍然会发出警告?否则,您的技术上可以从您的代码中仍然可以访问过度发布的实例。 – Monolo 2012-02-21 09:24:23