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

Mus*_*afa 12 iphone cocoa-touch garbage-collection objective-c ios

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

NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData:xmlData];
UIImage *originalImage = [[UIImage alloc] initWithData:data];
detailViewController = [[[DetailViewController alloc] initWithNibName:@"DetailView bundle:[NSBundle mainBundle]] autorelease];
Run Code Online (Sandbox Code Playgroud)

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

ada*_*dam 32

不可以.垃圾收集对于设备上有限的电池寿命等来说太大了.

您必须始终以alloc/release模式编程.

NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData:xmlData];
...
[xmlParser release];
Run Code Online (Sandbox Code Playgroud)

或(不适合所有情况)

NSXMLParser *xmlParser [[[NSXMLParser alloc] initWithData:xmlData] autorelease];
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!

  • 由Apple制造的iPhone OS,由Google制造的Android OS.常识是持续运行的垃圾收集过程将消耗额外的处理能力,从电池获取更多电力.Android中忽略了所有用于节省电池电量的iPhone选择,因此Android手机的电池寿命比iPhone差. (8认同)
  • 我认为苹果公司关于电池寿命的论点充其量只是微弱的.当然,GC是一个开销,但它与手机上运行的其他十亿个东西相比毫无意义.虽然所有优秀的iOS程序员都知道他们对Cocoa内存管理模式的了解,但实际情况是,所有iOS程序员都不是很好.如果没有像GC这样的安全网,我们最终会遇到大量糟糕的应用程序,这些应用程序随时都会崩溃.所以恕我直言,Apple应该为了他们的用户而包括GC,尤其是.随着CPU和电池寿命的不断提高. (8认同)
  • 如果电池寿命是iPhone没有GC的原因之一,为什么Android有垃圾收集器?请参阅:http://developer.android.com/reference/java/lang/System.html#gc%28%29.您是否介意传递消息来源,该消息称电池寿命是iPhone没有GC的原因之一?谢谢. (3认同)

Ste*_*ton 7

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