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

iPhone应用程序是否支持垃圾收集?,iphone,objective-c,cocoa-touch,ios,garbage-collection,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

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

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

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

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

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

编程时必须始终牢记
alloc/release
模式

NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData:xmlData];
...
[xmlParser release];
或(并非适用于所有情况)


希望这有帮助

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

Mono touch具有垃圾收集功能,并在iPhone操作系统上运行

在整个讨论中,没有人提到Java语言,Java语言中内置垃圾收集功能,因此Android、J2ME和Blackberry:)中可以隐式使用垃圾收集功能,而Objective-C是可选的,因此在iPhone中无法使用垃圾收集功能。

如果电池寿命是iPhone没有垃圾收集功能的原因之一,为什么Android有垃圾收集器?请参阅:。您是否介意提供一个参考资料,说明电池寿命是iPhone没有GC的原因之一?谢谢。苹果的iPhone操作系统,谷歌的安卓操作系统。常识是,持续运行的垃圾收集过程将消耗额外的处理能力,从电池中获取更多的能量。安卓系统忽略了iPhone为节省电池电量所做的所有选择,结果安卓手机的电池寿命比iPhone差。正如亚当所说,大多数安卓手机的电池寿命都很糟糕。我的朋友有一个机器人,他几乎不能在上面做任何事情而不消耗电池。所以,随着iPhone变得更强大,内存更多,电池寿命更长,你认为垃圾收集会被放回吗?我认为苹果关于电池寿命的争论充其量也很弱。当然,GC是一种开销,但与手机上运行的数十亿其他东西相比,它算不了什么。虽然所有优秀的iOS程序员都了解Cocoa内存管理模型,但事实上,并非所有的iOS程序员都是优秀的。如果没有像GC这样的安全网,我们最终会在应用商店到处都是的情况下,导致大量糟糕的应用程序崩溃。因此,苹果公司为了用户的利益应该包括GC,特别是CPU和电池寿命一直在提高。你介意举一个例子说明我们在没有弱引用(或链接,至少)的情况下缺少了什么吗?这个问题是一个很好的例子:想象一个哈希图,它所持有的任何东西都可能被解除分配,然后被遗忘——这样你就不会过度保留参考资料,但也不必担心字典中存储的无效指针。Mono-touch应用程序是用C#编写的,并最终编译为Objective-C。在特殊编译过程中的某个时刻,会插入对象的内存管理。我想是吧。我只能推测,但我会记录在案地说,这可能对内存效率没有什么好处。值得记住的是,这条偷听到的消息不会比c#或其他内存管理语言(java等)更糟糕。它有它的目的,这是我想表达的观点:)
NSXMLParser *xmlParser [[[NSXMLParser alloc] initWithData:xmlData] autorelease];