Что @private
значит в Objective-C?
ios
objective-c
cocoa
private
Джефф Вольски
источник
источник
Ответы:
Это модификатор видимости - это означает, что переменные экземпляра, объявленные как,
@private
могут быть доступны только экземплярам того же класса . Частные члены не могут быть доступны для подклассов или других классов.Например:
Также, чтобы уточнить, методы всегда общедоступны в Objective-C. Однако есть способы «скрыть» объявления методов - см. Этот вопрос для получения дополнительной информации.
источник
Как сказал htw, это модификатор видимости.
@private
означает, что ivar (переменная экземпляра) может быть доступен только непосредственно из экземпляра того же класса. Однако, это не может много значить для вас, поэтому позвольте мне привести вам пример. Мы будем использоватьinit
методы классов в качестве примеров, для простоты. Я прокомментирую, чтобы указать на интересные вещи.Таким образом, чтобы ответить на ваш вопрос, @private защищает ivars от доступа экземпляра любого другого класса. Обратите внимание, что два экземпляра MyFirstClass могут напрямую обращаться ко всем иварам друг друга; предполагается, что, поскольку программист имеет полный контроль над этим классом напрямую, он будет использовать эту способность с умом.
источник
@private
шаблон для объекта, это уже не так уж редко.@implementation
блоке. И после того, как вы это сделаете, они будут фактически приватными, независимо от модификаторов видимости, поскольку они даже не видны никому за пределами этого файла.Важно понимать, что это значит, когда кто-то говорит, что вы не можете получить доступ к
@private
переменной экземпляра. Реальная история в том, что компилятор выдаст вам ошибку, если вы попытаетесь получить доступ к этим переменным в вашем исходном коде. В предыдущих версиях GCC и XCode вы просто получали предупреждение вместо ошибки.В любом случае, во время исполнения все ставки выключены. Эти
@private
и@protected
ивары могут быть доступны для объекта любого класса. Эти модификаторы видимости просто затрудняют компиляцию исходного кода в машинный код, который нарушает намерение модификаторов видимости.Не полагайтесь на модификаторы видимости ivar для обеспечения безопасности! Они не предоставляют ничего вообще. Они предназначены исключительно для исполнения пожеланий класс-строителя.
источник