iPhone应用程序是否支持垃圾收集?

时间:2009-01-06 10:58:09

标签: iphone objective-c cocoa-touch ios garbage-collection

iPhone是否支持垃圾回收?如果是,那么执行使用+alloc-init组合执行的操作的替代方法是什么:

NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData:xmlData];
UIImage *originalImage = [[UIImage alloc] initWithData:data];
detailViewController = [[[DetailViewController alloc] initWithNibName:@"DetailView bundle:[NSBundle mainBundle]] autorelease];

......和其他命令。提前感谢您提供任何帮助或指导。

5 个答案:

答案 0 :(得分:32)

没有。对于设备上有限的电池寿命等,垃圾收集的开销太大。

您必须始终使用alloc/release模式进行编程。

NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData:xmlData];
...
[xmlParser release];

或(不适合所有情况)

NSXMLParser *xmlParser [[[NSXMLParser alloc] initWithData:xmlData] autorelease];

希望这有帮助!

答案 1 :(得分:7)

不,目前iPhone不支持垃圾回收。您需要使用alloc / release / autorelease

答案 2 :(得分:2)

请注意,缺少垃圾收集意味着不支持弱引用。

答案 3 :(得分:2)

Mono touch有垃圾收集并在iPhone OS上运行。

答案 4 :(得分:1)

在整个讨论中没有人说过Java语言,在Java中,Garbage集合是内置在语言中的,所以它在Android,J2ME和Blackberry :)中是隐式可用的,其中在Objective-C中它是可选的,所以在iPhone中GC不可用。