如果我将对象添加到子视图但是想稍后使用它,我应该释放它吗?

时间:2012-08-10 07:18:20

标签: ios ipad memory-management

假设我有一个UIViewController,它有一个不是属性的实例变量UIBarButtomItem *button。在viewDidLoad我做:

button = [[UIBarButtonItem alloc] init...] 

然后

self.navigationController.leftBarButtonItem = button

如果我想稍后在同一个课程中使用它,我应该释放按钮对象吗?我有关于数组的相同问题(将一个对象添加到数组并稍后使用它)。我很困惑,因为两个集合和UIViews都保留了添加到它们的对象

2 个答案:

答案 0 :(得分:1)

这取决于您以后如何访问它们。如果您通过实例变量访问它们而不是通过目标集合访问它们,那么您一定要释放它们。

答案 1 :(得分:0)

_button = [UIBarButtonItem alloc] init ..] //假设_button是类实例变量

按钮保留计数为1。

将其分配给leftBarButtonItem属性时 - 其保留计数变为2。

因此,只要你在viewdidunload / dealloc中释放按钮对象,就应该很好,因为当leftBarButton消失或重新分配时,它会使_button计数为0,从而正确释放你的对象。

如果_button不是实例变量,则应释放_button,然后使用.leftBarButtonProperty再次访问它。