根据经验,我通常为以下对象创建访问器IBOutlet
s.
在 ARC 或非 ARC 项目中我通常会执行以下操作:
//.h (ARC)
@property (nonatomic, weak) IBOutlet UILabel* myLabel;
//.h (non-ARC)
@property (nonatomic, retain) IBOutlet UILabel* myLabel;
//.m
@synthesize myLabel;
通过这种方式,您可以让编译器为您创建实例变量。但您也可以声明实例变量并告诉编译器使用它。
然后您可以在任何需要的地方使用该访问器/实例变量。
The 苹果内存管理指南 http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmPractical.html说你必须避免访问器方法init
or dealloc
当您有非 ARC 项目时的方法。因此,例如:
// (non-ARC)
- (void)dealloc
{
[myLabel release]; myLabel = nil; // I'm using the instance variable here!
[super dealloc];
}
这在非 ARC 项目中非常重要。原因是,如果没有访问器,KVC 会将 nib 对象分配给实例变量,并在其上放置一个保留。如果您忘记释放它,则可能会出现内存泄漏。使用访问器会强制您在最后释放该对象。
我强烈建议阅读星期五-qa-2012-04-13-nib-内存管理 http://www.mikeash.com/pyblog/friday-qa-2012-04-13-nib-memory-management.html作者:迈克·阿什。这是一篇关于 nib 和内存管理的非常酷的文章。
希望能帮助到你。