Как объявить неизменяемое свойство, поддерживаемое изменяемым типом?

Я бы хотел объявить общедоступное неизменяемое свойство:

@interface Foo
@property(strong, readonly) NSSet *items;
@end

... подкрепленное изменяемым типом в реализации file:

@interface Foo (/* private interface*/)
@property(strong) NSMutableSet *items;
@end

@implementation
@synthesize items;
@end

Я хочу, чтобы в реализации была изменяемая коллекция, которая преобразуется в неизменяемую w курица доступна снаружи. (Меня не волнует, что вызывающий может вернуть экземпляр к NSMutableSet и нарушить инкапсуляцию. Я живу в тихом, приличном городе, где такого не бывает.)

Прямо сейчас мой компилятор обрабатывает свойство как NSSet внутри реализации. Я знаю, что есть много способов заставить его работать, например, с помощью пользовательских геттеров, но есть ли способ сделать это просто с объявленными свойствами?

20
задан zoul 10 October 2011 в 08:47
поделиться