strong
和 weak
在 Xcode iOS 5.1 SDK 中的 IBOutlets 有何不同?
我之前使用的是 4.3 SDK,那里不存在 strong IBOutlets。此外,在 iOS 5.1 SDK 中也没有 (auto)release。
strong
和 weak
在 Xcode iOS 5.1 SDK 中的 IBOutlets 有何不同?
我之前使用的是 4.3 SDK,那里不存在 strong IBOutlets。此外,在 iOS 5.1 SDK 中也没有 (auto)release。
Strong
表示只要属性指向一个对象,该对象就不会被自动释放。在非 ARC 环境下,它是 retain
的同义词。
指定与目标对象之间存在强引用关系。
Weak
表示属性指向的对象可以被释放,但仅当它将属性设置为 NULL 时才能释放。在 ARC 中使用 weak 可以确保您不拥有它所指向的对象。
指定与目标对象之间存在弱引用关系。如果目标对象被释放,则属性值会自动设置为 nil。
Nonatomic
表示如果多个线程同时尝试读取或更改该属性,则可能会发生问题。后果是部分写入值或过度释放对象导致程序崩溃。
还可以查看苹果文档中的示例。
@property (weak) IBOutlet MyView *viewContainerSubview;
@property (strong) IBOutlet MyOtherClass *topLevelObject;
查看此链接以了解更多有关strong
和weak
的信息。
你声明为strong的属性将拥有该对象,编译器会确保任何分配给此属性的对象。当我们将其设置为nil时,该属性将被销毁。
如果您不想控制生命周期,则可以将其声明为weak属性。