У меня были различные случаи, когда у класса Objective-C есть свойство, которое должно быть классом коллекции (обычно NSArray). Есть ли стандартный способ реализовать это? Было бы замечательно иметь возможность просто использовать @synthesize для настройки этого. Я мог бы просто объявить это свойство как NSMutableArray и @synthesize, но это не позволяет мне принудительно определять, какие типы объектов могут быть помещены в коллекцию, а также не мешает клиентскому коду изменять массив. Обычно я делаю что-то вроде этого:
@property(nonatomic, readonly) NSArray *widgets;
- (void)addWidget:(Widget*)widget;
- (void)removeWidget:(Widget*)widget;
...
Коллекция реализована как NSMutableArray с NSArray, содержащим текущее содержимое, переданное обратно вызывающей стороне. Это кажется большим количеством кода для того, что должно быть распространенным сценарием. Чтобы настроить наблюдение значения ключа, необходимо выполнить еще больше кодов.
Я что-то упустил, или это действительно так много работы для настройки свойства коллекции?