[英]Questions related to the “strong” property in objective-c
最近,我一直在使用obj-c進行iOS開發,並且對可以附加到類中變量的“ strong”屬性感到困惑。
1)首先,從實際意義上講,“強”到底是做什么的?
2)我在構造幾個obj-c類時注意到,如果通常不想在變量中聲明變量,則通常在@property上下文中鍵入“ strong”(即@property (strong) UIImage *pic1, *pic2;
)。通過屬性/合成設置,是否可以為這樣的變量賦予“強”屬性?
強大的參考引用對象的所有權。
設置強屬性時,屬性所有者將保留傳遞的對象,例如[theViewController setString:aString];
使theViewController
擁有aString
所有權。 將屬性設置為其他對象時,將釋放該對象。
有一個所有權限定符 __strong
,它使變量按照我上面描述的方式運行。 它是任何對象變量的默認值NSArray * a;
是一個強有力的參考,等效於__strong NSArray * a;
。 一個區別是,對象不僅會在重置變量時釋放,而且會在超出范圍時釋放,如方法結尾:
- (void)activate {
NSArray * a = [NSArray array];
// a is __strong by default, takes ownership
} // a is going out of scope. To prevent a leak, ARC releases the array
1)Strong是ARC保留的替代品。 基本上,這意味着當為該屬性分配值時,例如[foo setBar: someValue]
,支持屬性bar
的實例變量將增加傳遞給setBar
someValue
參數的保留計數。
2)我認為您指的是使用__strong
前綴,所以可以。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.