iPhone是否支持垃圾回收?如果是,那么执行使用+alloc
和-init
组合执行的操作的替代方法是什么:
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData:xmlData];
UIImage *originalImage = [[UIImage alloc] initWithData:data];
detailViewController = [[[DetailViewController alloc] initWithNibName:@"DetailView bundle:[NSBundle mainBundle]] autorelease];
......和其他命令。提前感谢您提供任何帮助或指导。
答案 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不可用。