Например, у меня есть такие свойства:
@property (nonatomic, assign) CGFloat startValue;
@property (nonatomic, assign) BOOL running;
Это каскадная система, похожая на CSS, которая наследует значения, если они явно не изменены. Тем не менее, есть класс, описывающий все состояние. Он должен иметь свойства практически для всего. Можно изменить некоторые значения в иерархии, чтобы переопределить унаследованные, просто изменив некоторые свойства. Это цепочка примеров.
Проблема: с этим дизайном невозможно определить, переопределяет ли свойство значение из «главного объекта» или нет.
Мне нужен безопасный способ пометить, было ли свойство явно установлено на что-то или нет. Для CGFloat я мог бы сказать, что если значение <-99999, оно не установлено явно, и мы просто используем значение главного объекта. Но как насчет BOOL? </p>
Я также могу забыть о свойствах и переключиться на словари. Они позволяют перебирать ключи, поэтому я могу легко применить только изменения. Но они - боль в заднице, чтобы использовать повсеместно. Вот почему я хочу простой класс, где я могу просто установить свойства. Более простой в использовании, без уродливой и тяжелой упаковки значений в объектах NSNumber.
Я уверен, что есть разумные способы сделать это.