[英]iVars references strong, weak or what?
在Obj-C中,屬性可以配置為弱/強。 實例變量。 喜歡以下 -
@interface MyClass {
NSObject *a;
}
請問MyClass的的對象保持弱引用a
或強,或其他什么東西? 我認為iVar在其對象發布之前不會發布。 為什么我們不為iVar屬性指定弱/強?
對ivar的默認引用是__strong
,但您可以將其顯式設置為__weak
或__strong
您的問題激發了我的靈感,並對ObjectiveC內存管理進行了深入研究。 我想與你分享一些我從Apple Doc獲得的東西。
實例變量的默認行為
默認情況下,實例變量保持對對象的強引用
為什么我們不為iVar屬性指定弱/強?
默認情況下,局部變量和非屬性實例變量保持對對象的強引用。 沒有必要明確指定強屬性,因為它是默認屬性。
只要該變量在范圍內,或者直到將其重新分配給另一個對象或nil,變量就會保持對對象的強引用。如果您不希望變量維護強引用,可以將其聲明為__weak,如下所示:
NSObject * __weak weakVariable;
@interface MyClass {
__weak NSObject *a;
__strong NSObject *a;
__unsafe_unretained NSObject *obj;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.