亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

iVar財產,可以通過自我獲得?

iVar財產,可以通過自我獲得?

阿波羅的戰車 2020-02-02 14:59:46
我了解訪問屬性的setter / getter方法時應該使用[ self setThisValue:@"a"];而不是。thisValue = @"a";但是,在下面的示例中,我可以看到添加自我文檔是向iVar屬性(而不是局部范圍的變量)發送消息,但確實如此在這種情況下還要做什么?@interface CustomController : UIViewController {    NSMutableArray *foundList;}@property(nonatomic, retain) NSMutableArray *foundList;@end。[[self foundList] addObject:eachObject]; // I usually write this ...要么[foundList addObject:eachObject];加里。
查看完整描述

3 回答

?
一只名叫tom的貓

TA貢獻1906條經驗 獲得超3個贊

如果您具有ivar的已定義屬性,則應使用它而不是直接訪問ivar。這就允許子類重寫setter / getter并做一些與從ivar中獲取值不同的事情。

唯一的例外是init方法和dealloc。


查看完整回答
反對 回復 2020-02-02
?
牧羊人nacy

TA貢獻1862條經驗 獲得超7個贊

使用


[[self foundArray] addObject:eachObject];

您只需向getter方法添加額外的調用,我認為在大多數情況下這是不必要的。另一方面,除非您實現自己的自定義getter并做一些奇怪的事情,否則此構造的開銷很小,因此在我看來,這實際上只是樣式問題。(我個人不會在這里使用財產)


查看完整回答
反對 回復 2020-02-02
?
慕俠2389804

TA貢獻1719條經驗 獲得超6個贊

使用self.ivar也有一些內存清理問題。尤其是 您保留了其他階級擁有的財產。然后,您將獲得任何新對象,并想要更改對self.ivar = newObject的引用。如果不使用self.ivar,則當newObject也由他人擁有時,它可能具有錯誤的訪問權限。默認的setter會檢查引用(如果不是nil),則釋放舊值并將新的ivar設置為其新值。今天我在沒有對象的情況下使用沒有自我的東西,并且陷入了這個問題。簡而言之,如果對象是共享的,請使用self.ivar ...


查看完整回答
反對 回復 2020-02-02
  • 3 回答
  • 0 關注
  • 462 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號