可能是重复问题:
在ARC下,IBOutlets应该是强引用还是弱引用?
在文档中,我读到了这样的话: “Outlet 应该通常使用弱引用,除了从文件的所有者到一个nib文件(或在iOS中,storyboard场景)中的顶层对象的那些应该使用强引用。”
举个例子?我不明白什么时候使用“弱引用”而不是“强引用”属性对于 IBOutlet 更好。
可能是重复问题:
在ARC下,IBOutlets应该是强引用还是弱引用?
在文档中,我读到了这样的话: “Outlet 应该通常使用弱引用,除了从文件的所有者到一个nib文件(或在iOS中,storyboard场景)中的顶层对象的那些应该使用强引用。”
举个例子?我不明白什么时候使用“弱引用”而不是“强引用”属性对于 IBOutlet 更好。
一般而言:如果你在将一个插座(outlet)连接到ViewController的子视图(subview)上时,它应该是弱引用(weak)。该对象仅存在于顶级视图(viewDidLoad和viewDidUnload之间)的存在期间。因为在iOS 5中使用了ARC自动将弱关联(nullifies weak links),当viewController卸载其视图并销毁视图层次结构时,你的插座将自动设置为nil。
但也许你想在nib文件中创建另一个对象(模型对象)。由于此对象不在视图层次结构下,你需要将iboutlet设为强引用(strong)。如果你将其链接为弱引用,则该对象将被自动释放,因为没有其他对象有强引用指向它,ARC会释放它并将nil设置给你的IBOutlet。然而Subview不是这种情况,因为它的Superview保持与它的强关联。