0

我怀疑我们将如何正确释放实例变量。我知道我们可以在 dealloc 方法中进行释放。如果我们self.instancevariouble=nil在viewdidunload中给出的同样会释放该对象。我的问题是,如果我们在 unload 方法中将对象设为 nil,然后在 dealloc 方法中释放它,是否有任何问题。另外,我如何需要发布在 xib 中添加为 IBoutlet 的 tableview。有人能指出我正确的方向吗?

4

3 回答 3

2

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

于 2012-11-08T13:44:53.527 回答
0

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

UILabel *lbl = nil;
[lbl release];

它不会做任何事情。

关于“我如何需要发布一个在xib中添加为IBoutlet的tableview。有人能指出我正确的方向吗?” 您必须将 xib 文件中的 UITableView 与您的代码“连接”并执行以下操作:

[myTableView release];
于 2012-11-08T13:44:38.183 回答
0

如果您self.instanceVariable = nil在该viewDidUnload方法中使用(顺便说一句,iOS 6 中不再调用该方法)该值当然是nil. dealloc因此,如果您随后在您基本上调用的方法中释放它,[nil release];那么它什么也不做。

于 2012-11-08T13:45:20.293 回答