Итак, я ознакомился с лучшими практиками кодирования и важностью использования сеттеров / геттеров для доступа и изменения переменных экземпляра моих пользовательских классов, а не для того, чтобы сделать переменные общедоступными и получить к ним прямой доступ.
Но как это приводит к доступу к значениям внутри переменной экземпляра Mutable Dictionary?
В частности, у меня есть пользовательский класс. Этот класс имеет несколько переменных экземпляра, одной из которых является NSMutableDictionary. Для переменных экземпляра «не массива» (BOOL и т. Д.) Я понимаю, как «правильно» получить к ним доступ: использовать точечные обозначения и методы setter / getter.
Но для моей переменной NSMutableDictionary установщик / получатель просто обращается к словарю весь , верно? Итак, как из моего контроллера правильно установить / получить значения внутри словаря классов?
На самом деле, этот вопрос относится даже к коду реализации класса:
Возьмите мой удобный метод init, например:
- (id) initWithID:(int)ID
{
if (self = [super init]) {
[self initProcedure];
[myData setObject:[NSNumber numberWithInt:ID] forKey:@"ID"];
}
return self;
}
Я обращаюсь к переменной экземпляра "myData" напрямую, а не использую методы setter / getter. Я знаю, что это «разрешено», но, как я понимаю, это не лучший способ. Но как мне использовать сеттер / геттер для значений в словаре?
И затем, возвращаясь к тому, с чего мы начали, как мне сделать это вне реализации класса, например, из моего контроллера?
Для моих простых переменных экземпляра класса это просто myClassInstance.aClassVariable = someValue
Но что, если я хочу что-то изменить внутри "myData"?
Я делаю что-то вроде [myclassInstance.myData setObject:... forKey:...]
(я знаю, что это не правильно, я просто пытаюсь прояснить свой вопрос / замешательство.
Полагаю, я могу создать собственные методы класса, которые я вызываю из контроллера, например [myclassInstance editMyDataWithObject:... forKey:...]
Но это кажется громоздким и все же возвращает нас к вопросу о реализации внутри самого класса и о том, как правильно использовать метод setter / getter для доступа к переменным-членам словаря вместо прямой модификации самого словаря.
Извините за длину, надеюсь, мой вопрос ясен. Спасибо!