[英]Difference between Strong and Weak IBOutlets
是什么区别strong
与weak
在Xcode的iOS 5.1 SDK IBOutlets?
我之前使用的是4.3 SDK,其中没有强大的IBOutlets。 此外,iOS 5.1 SDK中不提供(自动)版本。
Strong
意味着只要此属性指向一个对象,该对象就不会自动释放。 在非ARC中,它是retain
的同义词
指定与目标对象存在强(拥有)关系。
相反, Weak
意味着属性指向的对象可以自由释放,但前提是它将属性设置为NULL。 在ARC中,您使用weak来确保您不拥有它指向的对象
指定与目标对象存在弱(非拥有)关系。 如果目标对象已取消分配,则属性值将自动设置为nil。
Nonatomic
意味着如果多个线程尝试一次读取或更改属性,则可能发生错误。 后果是会有部分写入的值或过度释放的对象= CRASH。
请看Apple的文档 。
从那里,例子是
@property (weak) IBOutlet MyView *viewContainerSubview;
@property (strong) IBOutlet MyOtherClass *topLevelObject;
检查也该知道更多关于strong
和weak
。
在ARC(自动引用计数)中, Strong
告诉编译器属性 - 所有者关系是“强”。 它相当于retain
在自动释放池内存方案中。 Apple在这里有一篇关于过渡到ARC的文章。
您声明为strong的属性,它拥有该对象,编译器将负责任何对象分配此属性。 当我们设置为nil时,此属性将被销毁。
如果您不想要控制生命周期,那么您将声明为周属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.