【发布时间】:2011-01-26 02:14:49
【问题描述】:
[这是内存管理说明/问题]
- 我有一个返回 NSMutableArray* 的类方法。
- 我希望调用者拥有它并且必须调用释放。
- 我不想使用 AutoRelease,因为我希望它在调用者完成后立即从内存中释放出来。
只要我以 new 或 alloc 开头的名称就可以这样做,对吗?
例如
+ (NSMutableArray*) newArrayFromDB
{
NSMutableArray* myArray = [[NSMutableArray alloc] init];
//stuff to populate array
return myArray;
}
然后调用者将调用:
NSMutableArray* test = [ThatClass newArrayFromDB];
//use test
[test release];
静态分析器似乎认为没问题...但我想要第二个意见...
感谢您的任何反馈....
【问题讨论】:
-
你为什么要这个?是什么让这个案例如此特别?
-
我没有意识到(正如大卫指出的那样)默认的自动释放池在每次通过主循环时都会被耗尽。我错误地认为,直到游泳池本身超出范围,它才被排干。我现在很高兴返回一个 Autoreleased NSMutableArray。
标签: objective-c