如何发布实例变量?

时间:2012-11-08 13:39:26

标签: objective-c ios cocoa-touch

我怀疑我们将如何正确释放实例变量。我知道我们可以在dealloc方法中进行释放。如果我们在viewdidunload中以self.instancevariouble=nil给出,也将释放该对象。我的问题是如果在卸载方法中将对象赋予nil,然后在dealloc方法中释放它,则会出现任何问题。另外我如何需要释放一个在xib中添加为IBoutlet的tableview。任何人都指向正确的方向?

3 个答案:

答案 0 :(得分:2)

在nil对象上调用release没有问题,但作为更好的策略,转移到ARC,大多数这些问题都会消失。 (另请注意,iOS 6不会卸载视图。)

答案 1 :(得分:0)

如果你尝试释放一个nil对象,它将“正常”。您可以在没有应用程序崩溃的情况下向nil对象发送消息;)这样您就可以执行此操作:

UILabel *lbl = nil;
[lbl release];

它什么都不做。

关于“我如何需要释放一个在xib中添加为IBoutlet的tableview。任何人都指向正确的方向?”您必须使用代码将xib文件中的UITableView“连接”起来并执行:

[myTableView release];

答案 2 :(得分:0)

如果您在self.instanceVariable = nil方法中使用viewDidUnload(顺便说一下,iOS 6中不再调用该方法),则该值当然为nil。因此,如果您在dealloc方法中发布该版本,则基本上会调用[nil release];,但这样做无效。