【发布时间】:2012-02-21 09:17:43
【问题描述】:
谁能告诉我为什么这种方法会泄漏?我已经看了很长时间了,无法弄清楚它为什么会泄漏。泄露的对象是ContactOperations。 EventType 是 Malloc 和 Release。我认为init 可能是错误的?
联系人
ContactOperations *contactOps = [[ContactOperations alloc] initWithDatabase:database];
if ([contactOps applicationIsOwner])
[contactOps startOperations];
[contactOps release];
仪器说分配器给了我泄漏...
联系运营
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 内部进行静态分析吗?
-
contactOps是否保留在-[ContactOperations startOperations]的某个位置?除此之外,您发布的代码中没有任何泄漏。 -
愚蠢的问题:如果您在发布后将
contactOps设置为nil,它仍然会发出警告吗?如果没有,从技术上讲,您仍然可以从您的代码中访问过度发布的实例。 -
@trojanfoe - 静态分析找不到任何东西。
-
@Costique 它没有保留这是它使用的唯一方式。
标签: iphone objective-c ios memory-leaks