Предоставление доступа только в том случае, если мутаторы остаются закрытыми в свойствах Objective-C - PullRequest
1 голос
/ 10 марта 2011

Допустим, у меня есть класс с некоторыми переменными экземпляра, и я хочу предоставить эти i-переменные для использования «только для чтения» через свойство точечной нотации, но в то же время, чтобы иметь возможность использовать мутатор свойств внутри моего класса.также с точечной нотацией.

Проблема в том, что я заявляю в своем файле .h вот так:

@property (readonly) ....

Тогда, даже если я пишу мутатор сам (-(void) setMyIvar:) Я не могу использовать его с точечной нотацией, потому что компилятор жалуется (по праву), что свойство доступно только для чтения.

Я попытался повторно объявить свойство в моем файле .m (внутри расширения интерфейса)) вот так:

@inteface MyClass()
@property (retain) myIvar;
@end

Но компилятор не принял это двойное объявление.

Есть ли способ, которым я могу это сделать?

1 Ответ

2 голосов
/ 10 марта 2011

Вы можете сделать это, но вы должны будете сделать это так:

@property (retain,readonly) ....

В вашей реализации:

@inteface MyClass()
@property (retain,readwrite) myIvar;
@end

Другими словами, декларация должна быть такой же, за исключением доступности.

...