Кто-нибудь знает способ добавления дополнительных типов атрибутов к ключевому слову @property без изменения компилятора? Или кто-нибудь может придумать другой способ обобщить создание геттера / сеттера?
По сути, у меня есть много случаев в недавнем проекте, когда объектам удобно лениво создавать свои свойства массива. Это потому, что у нас есть объекты «события», которые могут иметь широкий спектр коллекций в качестве свойств. Создание подклассов для определенных событий нежелательно, поскольку многие свойства являются общими, и это станет кошмаром для удобства использования.
Например, если бы у меня был объект с массивом песен, я бы написал геттер, как показано ниже:
- (NSMutableArray *)songs {
if (!songs) {
songs = [[NSMutableArray alloc] init];
}
return songs;
}
Вместо того, чтобы писать десятки этих геттеров, было бы действительно неплохо получить поведение через ...
@property (nonatomic, retain, lazyGetter) NSMutableArray *songs;
Может быть, какие-нибудь причудливые трюки через #defines или что-то в этом роде? Другие идеи?