7

strongXcode iOS 5.1 SDK和weakIBOutlets 有什么区别?

我之前使用的是 4.3 SDK,其中不存在强大的 IBOutlets。此外,(auto)release 在 iOS 5.1 SDK 中不可用。

4

3 回答 3

13

Strong意思是只要这个属性指向一个对象,那个对象就不会被自动释放。在非 ARC 中,它是retain

指定与目标对象存在强(拥有)关系。

Weak相反,意味着属性指向的对象可以自由释放,但前提是它将属性设置为 NULL。在 ARC 中,您使用 weak 来确保您不拥有它指向的对象

指定与目标对象存在弱(非拥有)关系。如果目标对象被释放,属性值会自动设置为 nil。

Nonatomic意味着如果多个线程尝试一次读取或更改属性,则可能会发生错误。后果是会有部分写入的值或过度释放的对象 = CRASH。

还可以在这里查看 Apple 的文档

从那里,例子是

@property (weak) IBOutlet MyView *viewContainerSubview;
@property (strong) IBOutlet MyOtherClass *topLevelObject;

还要检查这个以了解更多关于strongand的信息weak

于 2012-06-23T11:15:36.350 回答
2

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

于 2012-06-23T11:25:07.720 回答
0

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

当您不想要控制生命周期时,您可以声明为周属性。

于 2014-01-20T14:26:53.360 回答