如果没有属性(在 iOS 中),IBOutlet 将是由 KVC 设置和保留的 ivar。通过@property
设置属性来设置 ivar。
在 ARC 项目中,如果创建一个 nib 并将一个项目(例如UILabel
)拖到 .h 文件中,@property
则会添加一个 strong 以及在 .m 文件中将属性设置为 nil 的行将添加到viewDidUnload
方法中,并且属性的@synthesize 语句。
还有其他方法可以处理保留nib
IBOutlets
该工作的方法,并且在某些指标上甚至可能更好。
从 Apple 文档Resource Programming Guide -Managing the Lifetimes of Objects from Nib Files:
因为 outlet 的行为取决于平台,所以实际的声明有所不同:
对于 iOS,您应该使用:
@property (nonatomic, retain) IBOutlet UserInterfaceElementClass *anOutlet;
对于 OS X,您应该使用:
@property (assign) IBOutlet UserInterfaceElementClass *anOutlet;
我的信念是不要与苹果做事的方式作斗争,这样做往往会使事情变得更难。还要考虑到苹果拥有该平台未来的内幕消息。:-)