2009-09-08 79 views
0

我有一個Objective-C的NSMutableDictionary類的@interface部分內部聲明,與getter/setter方法,就像這樣:修改NSMutableDictionary實例變量的正確方法?

@interface myClass : NSObject 
{ 
    NSMutableDictionary *dict; 
} 
- (void) setDict: (NSMutableDictionary *) newDict; 
- (NSMutableDictionary *) dict; 

裏面的一些我@implementation方法,我想修改字典。我想堅持使用標準的Obj-C語言,並將其修改爲「正確」。是否可以使用getter而不是setter來修改它:

[[self dict] removeObjectForKey:@"myKey"]; 

......還是有更好的方法來做到這一點嗎?

回答

3

這會工作,但爲什麼不這樣做:

[dict removeObjectForKey:@"myKey"]; 

裏面一個類的實現,你必須實例變量的直接訪問,並直接使用它們是地道的Objective-C。

+0

我的印象是,你應該總是通過他們的Getter方法訪問變量,而不是直接訪問變量。不過,我對這門語言很陌生,所以我很可能在這方面有錯。 – 2009-09-08 14:43:46

+0

在類自己的實現中使用訪問器方法通常不是(通常)必需的;當然,外部類應該使用訪問器方法。 – mipadi 2009-09-08 14:45:44

+1

啊,優秀!謝謝! 雖然有必要在類自己的實現中使用accessor方法,但還是有問題嗎?是否會在你創建自己的自定義訪問器時做了一些奇怪的事情,比如每當讀取一個變量時增加一個計數器? – 2009-09-08 14:55:07