我过去常常为iPhone宣布IBOutlets,
IBOutlet UILabel *myLabel
我刚刚发现声明它们的正确方法就像是,
UILabel *myLabel;
@property(nonatomic,retain) IBOutlet UILabel *myLabel;
但是第二种正确的方法是你必须在-(void)dealloc
方法中释放每个IBOutlet以避免内存泄漏吗?
答案 0 :(得分:3)
简而言之,他们应该以任何一种方式解除分配。在第二种方法中,您所做的只是创建一个getter / setter对,它不会在适当的时间处理释放。它有一些逻辑,知道何时在替换对象时正确解除分配,但它不能在那里进行最后的清理,因为setter仍然以这种方式分配一个新对象。
以这种方式看待它:您必须释放您专门分配的对象。如果您的插座,通过代码的过程,或者凭借来自NIB文件的实例化数据被分配了一个对象,在某些时候您负责清理它(除非它来自自动释放方便方法)。 / p>