У меня есть следующий код:
@interface Room : NSObject
{
@protected
NSMutableDictionary* mCustomProperties;
}
@property (readonly, copy) NSDictionary* CustomProperties;
@end
@interface MutableRoom : Room
{
}
@property (readwrite, retain) NSMutableDictionary* CustomProperties;
@end
Эти свойства затем реализуются позже путем доступа к mCustomProperties.Я знаю, что нельзя переопределять атрибут управления памятью или тип данных свойства в подклассе, чтобы отличаться от данных в базовом классе.Тем не менее, я хочу добиться следующего: - Предоставлять только доступ только для чтения к словарю в неизменяемом базовом классе.Поскольку этот элемент является NSMutableDictionary, просто возвращая его как сохраненный экземпляр NSDictionary, будет означать, что его простое приведение сделает его снова изменяемым, даже непреднамеренным, когда пользователь свойства сохраняет переменную доступа где-то как экземпляр NSObject, а затем восстанавливаетпервоначальный тип его вернулся позже.Поэтому я хочу вернуть изменяемый словарь по неизменяемой копии в свойстве readonly.- Предоставить полный доступ на чтение и запись к словарю в изменяемом подклассе.Поскольку вы должны не только хранить там другой словарь, но и просто изменять содержимое существующего, я бы хотел, чтобы свойство в подклассе было не только для перезаписи, но и для сохранения, а не для копирования, поэтомудоступ к исходным значениям и доступ к нему как к NSMutableDictionary, а не как к NSDictionary, чтобы можно было добавлять, удалять или изменять записи словаря через свойство.
Есть ли более элегантный способчем подавление предупреждения или использование двух свойств с разными именами?