iPhone 开发 - 释放一个自动释放的对象

Posted

技术标签:

【中文标题】iPhone 开发 - 释放一个自动释放的对象【英文标题】:iPhone Development - Release an autoreleased object 【发布时间】:2009-07-31 04:19:18 【问题描述】:

如果我释放一个自动释放的对象会发生什么?它是我想释放的自动释放 UIButton,创建 UIButton 的唯一方法是使用方便的方法 buttonWithType:。它会像普通对象一样从内存中释放吗?或者我应该让自动释放池来处理它?如果可以的话,我一开始就不会让它自动发布。

谢谢!!

【问题讨论】:

【参考方案1】:

您应该让自动释放池处理它。将按钮添加到父视图后,该视图将保留它,并且自动释放的句柄将由自动释放池处理。

考虑它的最简单方法是所有权 - 您不会“拥有”通过便捷方法获得的引用,因此除非您也保留它,否则您无需费心发布它。

【讨论】:

【参考方案2】:

您只能释放您拥有的对象。 +buttonWithType: 不返回一个拥有的对象,所以你不能释放它。

查看Cocoa Object Ownership Rules。

你为什么要在这里避免一个自动释放的对象?大概您正在创建按钮,因为您正在使用该按钮并将其插入到视图层次结构中,因此没有真正的理由加速包含该按钮的自动释放池的排空。

【讨论】:

以上是关于iPhone 开发 - 释放一个自动释放的对象的主要内容,如果未能解决你的问题,请参考以下文章

何时释放带有“自动释放”的对象?

iPhone - 如果在自动释放后保留会发生啥?

Iphone 打开 gl es 应用程序和自动释放池

自动释放的对象何时真正释放?

iphone内存管理问题

iPhone:在对象上调用释放:它会立即释放吗?