我已經搜索了許多關于ObjC訪問器和綜合訪問器的問題,但是都沒有用。這個問題更像是一個“幫助我解決問題”的問題;我不希望有一個答案,但我希望找專家來論證。在Cocoa Touch類中,我將編寫如下代碼(其中soundEffects是合成的NSArray屬性):id foo = [self.soundEffects objectAtIndex:1];一位同事讓我解釋一下,為什么上述內容比這行更好:id foo = [soundEffects objectAtIndex:1];好吧,從功能上來說,沒有什么不同。我對前者的論據如下:self.soundEffects 告訴處理該代碼的所有其他編碼器這是一個iVar,而不是局部范圍的變量。如果需要,可以將自定義邏輯放入soundEffectsgetter訪問器中。在沒有具體原因的情況下,在Obj-C工作了一年后,感覺就像做正確的事情。他接受參數#1和#2是有效的,但也給出了對點:這不只是代碼膨脹嗎?是否應該允許類直接與自己的iVar對話而不必自己調用方法(getter)?有沒有人?
3 回答

肥皂起泡泡
TA貢獻1829條經驗 獲得超6個贊
自我聲音效果
通過setter / getter設置/獲取實例變量,因此,如果我們想在其值更改時執行一些自定義操作,則該邏輯可以進入其getter / setter。
同樣根據ios 6,ivar對應于
@property(nonatomic)NSArray * propertyName;
將會
_propertyName
所以我想你不能使用
id foo = [soundEffects objectAtIndex:1];
不再。不過不確定。相反,您應該使用
id foo = soundEffects [1];
- 3 回答
- 0 關注
- 533 瀏覽
添加回答
舉報
0/150
提交
取消