强和弱IBOutlets之间的区别
Xcode iOS 5.1 SDK中的strong
和weak
IBOutlets有什么区别?
我以前使用4.3 SDK,其中强IBOutlets不存在。 另外,(自动)版本在iOS 5.1 SDK中不可用。
Strong
意味着只要这个属性指向一个对象,该对象就不会被自动释放。 在非ARC中,它是retain
的同义词
指定与目标对象有很强的(拥有)关系。
Weak
代替,意味着属性指向的对象,可以自由释放,但只有当它将属性设置为NULL。 在ARC中,你使用weak来确保你不拥有它指向的对象
指定与目标对象之间存在弱(非拥有)关系。 如果目标对象被释放,则属性值自动设置为零。
Nonatomic
意味着,如果多个线程试图读取或立即更改属性,可能会发生不良情况。 后果是会有部分写入的值或过度释放的对象= CRASH。
在苹果公司的文件中也可以看看这里 。
从那里,例子是
@property (weak) IBOutlet MyView *viewContainerSubview; @property (strong) IBOutlet MyOtherClass *topLevelObject;
也请检查这个了解更多关于strong
和weak
。
在ARC(自动引用计数) Strong
告诉编译器,属性所有者关系是“强大的”。 相当于retain
在自动释放池内存scheme中。 苹果有一篇关于在这里过渡到ARC的文章。
你声明为强的属性,它拥有该对象,编译器将关心哪个对象分配这个属性。 当我们设置为零时,这个属性将被销毁。
当你不想控制生命时间,那么你宣布为一周的财产。