强和弱IBOutlets之间的区别

Xcode iOS 5.1 SDK中的strongweak 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; 

也请检查这个了解更多关于strongweak

在ARC(自动引用计数) Strong告诉编译器,属性所有者关系是“强大的”。 相当于retain在自动释放池内存scheme中。 苹果有一篇关于在这里过渡到ARC的文章。

你声明为强的属性,它拥有该对象,编译器将关心哪个对象分配这个属性。 当我们设置为零时,这个属性将被销毁。

当你不想控制生命时间,那么你宣布为一周的财产。