Xcode iOS 5.1 SDK中strong
和weak
IBOutlets有什么区别?
我之前使用的是4.3 SDK,其中没有强大的IBOutlets。此外,iOS 5.1 SDK中不提供(自动)版本。
答案 0 :(得分:13)
Strong
表示只要此属性指向一个对象,该对象就不会自动释放。在非ARC中,它是retain
相反,指定与...的强(拥有)关系 目标对象。
Weak
意味着属性指向的对象可以自由释放,但前提是它将属性设置为NULL。在ARC中,您使用weak来确保您不拥有它指向的对象
指定与...的弱(非拥有)关系 目标对象。如果目标对象已取消分配,则 属性值自动设置为nil。
Nonatomic
表示如果多个线程尝试一次读取或更改属性,则可能发生错误。后果是会有部分写入的值或过度释放的对象= CRASH。
从那里开始,例子是
@property (weak) IBOutlet MyView *viewContainerSubview;
@property (strong) IBOutlet MyOtherClass *topLevelObject;
同时选中this以了解有关strong
和weak
的更多信息。
答案 1 :(得分:2)
在ARC(自动引用计数)中Strong
告诉编译器属性 - 所有者关系是“强”。它等同于自动释放池内存方案中的retain
。 Apple有一篇关于过渡到ARC here的文章。
答案 2 :(得分:0)
您声明为strong的属性,它拥有该对象,编译器将负责任何对象分配此属性。当我们设置为nil时,此属性将被销毁。
如果您不想要控制生命时间,则将其声明为周属性。