繁体   English   中英

强弱IBOutlets之间的区别

[英]Difference between Strong and Weak IBOutlets

是什么区别strongweak在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;

检查也知道更多关于strongweak

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

您声明为strong的属性,它拥有该对象,编译器将负责任何对象分配此属性。 当我们设置为nil时,此属性将被销毁。

如果您不想要控制生命周期,那么您将声明为周属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM