【发布时间】:2009-07-31 04:19:18
【问题描述】:
如果我释放一个自动释放的对象会发生什么?它是我想释放的自动释放 UIButton,创建 UIButton 的唯一方法是使用方便的方法 buttonWithType:。它会像普通对象一样从内存中释放吗?或者我应该让自动释放池来处理它?如果可以的话,我一开始就不会让它自动发布。
谢谢!!
【问题讨论】:
标签: iphone objective-c uibutton release autorelease
如果我释放一个自动释放的对象会发生什么?它是我想释放的自动释放 UIButton,创建 UIButton 的唯一方法是使用方便的方法 buttonWithType:。它会像普通对象一样从内存中释放吗?或者我应该让自动释放池来处理它?如果可以的话,我一开始就不会让它自动发布。
谢谢!!
【问题讨论】:
标签: iphone objective-c uibutton release autorelease
您应该让自动释放池处理它。将按钮添加到父视图后,该视图将保留它,并且自动释放的句柄将由自动释放池处理。
考虑它的最简单方法是所有权 - 您不会“拥有”通过便捷方法获得的引用,因此除非您也保留它,否则您无需费心发布它。
【讨论】:
您只能释放您拥有的对象。 +buttonWithType: 不返回一个拥有的对象,所以你不能释放它。
查看Cocoa Object Ownership Rules。
你为什么要在这里避免一个自动释放的对象?大概您正在创建按钮,因为您正在使用该按钮并将其插入到视图层次结构中,因此没有真正的理由加速包含该按钮的自动释放池的排空。
【讨论】: