簡體   English   中英

與objective-c中“強”屬性有關的問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM