Подтвердить что ты не робот

Objective-C свойство, которое открыто только для публики, но имеет частный сеттер

Я хотел бы использовать синтаксис @property, чтобы объявить синтезированное свойство, которое открыто для чтения, но имеет сеттер, который можно вызвать конфиденциально изнутри класса.

Поскольку это Objective-C, это в основном означает, что метод setFoo: будет синтезирован, но вызов его вне самого класса приведет к предупреждению (непризнанный селектор). Чтобы вызвать предупреждение, я должен объявить свойство readonly; есть ли способ заставить синтезированный сеттер, который доступен только в классе?

4b9b3361

Ответ 1

Я думаю, что то, что вы ищете, называется расширениями класса. Вы объявляете свойство read-only в заголовке:

@interface MyClass : NSObject {
}

@property (readonly, assign) NSInteger myInteger;

@end

Затем переопределите расширение вашего класса в файле реализации:

@interface MyClass ()

@property (readwrite, assign) NSInteger myInteger;

@end


@implementation MyClass

@end

Подробнее о Apple documentation