强弱IBOutlets之间的区别

时间:2012-06-23 11:05:59

标签: iphone ios xcode ios5

Xcode iOS 5.1 SDK中strongweak IBOutlets有什么区别?

我之前使用的是4.3 SDK,其中没有强大的IBOutlets。此外,iOS 5.1 SDK中不提供(自动)版本。

3 个答案:

答案 0 :(得分:13)

Strong表示只要此属性指向一个对象,该对象就不会自动释放。在非ARC中,它是retain

的同义词
  

指定与...的强(拥有)关系   目标对象。

相反,

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

  

指定与...的弱(非拥有)关系   目标对象。如果目标对象已取消分配,则   属性值自动设置为nil。

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

看看here, at Apple's documents

从那里开始,例子是

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

同时选中this以了解有关strongweak的更多信息。

答案 1 :(得分:2)

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

答案 2 :(得分:0)

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

如果您不想要控制生命时间,则将其声明为周属性。