2013-03-06 77 views
5

應該使用使用weak只讀屬性?

@property (nonatomic, weak, readonly)

@property (nonatomic, readonly)

弱的優點是如果它被釋放,但是隻讀意味着弱?是否應該明確聲明一個財產如果它想要弱的行爲?

回答

5

如果你想保留一個指向你不擁有的對象的指針,但是隻要它存在就希望它是有效的,那麼你想使用一個弱指針,因爲當它被所有者解除分配時,你的指針會自動設置爲零,並且不會指向它不應該存在的內存。


這些都有不同的含義,只讀或不強弱就不會有任何區別。

@property (nonatomic, weak, readonly) 
@property (nonatomic, readonly) 

您還可以找到一些reference here

+3

添加到@ AnoopVaidya的答案只讀告訴編譯器只生成一個getter,而不是setter。如果您嘗試直接更改該屬性,它也會輕鬆地給您一個很好的警告。 – JiuJitsuCoder 2013-03-06 18:31:44

2

弱點或強度與readonly或readwrite無關。沒有意味着另一個。

強大的關係取得所有權。弱者不會在刪除相關對象時收到無效的服務。

只讀抑制setter(afaik)。該屬性不能從其課堂外改變。 Readwrite(如果沒有聲明,這是默認值)允許更改屬性。

基本上就是這樣。這是兩個彼此不相關的設置。他們在所有可想而知的協作中工作。