使用包含静态分析器的最新XCode版本时,我的一些对象正在抛出分析器问题报告。具体来说,我有一个拥有自己的对象,负责释放自己,但也应该返回给调用者,并可能手动保留。Objective C命名约定为拥有自己的对象
如果我有一个像+ (Foo) newFoo
这样的方法,分析器会看到单词New,并在调用者中报告问题newFoo
预计会返回一个保留为+1的对象,并且它不会在任何地方被释放。如果我将其命名为+ (Foo) getFoo
,分析仪会报告该方法中的问题,并说有潜在的泄漏,因为它在返回之前未被释放。
我的班级基本上是这样的:
+ (Foo *) newFoo {
Foo *myFoo = [[[Foo new] retain] autorelease];
[myFoo performSelectorInBackground:@selector(bar) withObject:nil];
return myFoo;
}
- (void) bar {
//Do something that might take awhile
[self release];
}
的对象拥有本身及其完成后,会释放自己,但没有什么地方,它的存储,所以静态分析认为这是什么地方泄漏。是否有一些命名或编码惯例可以帮助?
in newFoo它真的会返回foo而不是myFoo吗? – Mark 2010-05-12 17:26:23
让我解决这个问题 – 2010-05-12 17:27:39