类方法[这是存储器管理澄清/问题]返回对象和所有权转移
- 我有一个返回一个NSMutableArray *一个类的方法。
- 我希望调用者拥有它并且必须调用release。
- 我不想使用AutoRelease,因为一旦调用者完成,我想从内存中释放它。
只要我用new或alloc开始名称,这是正确的吗?
例如
+ (NSMutableArray*) newArrayFromDB
{
NSMutableArray* myArray = [[NSMutableArray alloc] init];
//stuff to populate array
return myArray;
}
然后调用者会要求有:
NSMutableArray* test = [ThatClass newArrayFromDB];
//use test
[test release];
静态分析器似乎认为这是确定......但我想第二个意见...
感谢您的反馈....
你为什么要这样?是什么让这个案例变得特别? – Chuck 2011-01-26 02:29:49
我没有意识到(正如David所指出的那样)默认的自动释放池每次都通过主循环被耗尽。我错误地认为它在游泳池本身超出范围之前不会流失。我现在很高兴地返回一个Autoreleased NSMutableArray。 – 2011-02-22 02:14:11