Как сделать реальную частную переменную экземпляра?

Возможно, Вы ищете что-то вроде этого:

StackFrame frame = new StackFrame(1);
frame.GetMethod().Name; //Gets the current method name

MethodBase method = frame.GetMethod();
method.DeclaringType.Name //Gets the current class name
51
задан Quinn Taylor 11 August 2009 в 09:09
поделиться

3 ответа

Вы можете использовать ключевое слово @private внутри {} , чтобы сделать все последующие объявления переменных закрытыми. Видимость по умолчанию - @protected (что аналогично protected в Java), и это обычно хорошо работает. Вам нужно будет специально объявить переменную как @public , чтобы она была доступна напрямую за пределами класса.

В этой документации Apple есть дополнительные сведения о области видимости и видимости переменных.

Там также разница между «частным API» и частными переменными. В Objective-C вы не можете делать методы закрытыми - любой может вызывать любой метод. Есть несколько способов создания «секретных» методов, но это несколько выходит за рамки этого вопроса. Вот несколько связанных вопросов SO:

Что касается ведущего символа _ перед переменными, имейте в виду, что Apple также резервирует этот префикс для «частных» методов. Лучший способ гарантировать избежание проблем - использовать обычные соглашения об именах для ваших собственных переменных и методов. Однако, если вы не подклассифицируете что-то из Cocoa (кроме NSObject), вы можете быть уверены, что не столкнетесь с проблемами.

Лучший способ гарантировать избежание проблем - использовать обычные соглашения об именах для ваших собственных переменных и методов. Однако, если вы не подклассифицируете что-то из Cocoa (кроме NSObject), вы можете быть уверены, что не столкнетесь с проблемами.

Лучший способ гарантировать избежание проблем - использовать обычные соглашения об именах для ваших собственных переменных и методов. Однако, если вы не подклассифицируете что-то из Cocoa (кроме NSObject), вы можете быть уверены, что не столкнетесь с проблемами.

60
ответ дан 7 November 2019 в 10:03
поделиться

Все переменные в Objective-C защищены по умолчанию. Если вы не напишите методы доступа, другие классы не смогут видеть переменные.

Двумя исключениями являются категории и подклассы.

3
ответ дан 7 November 2019 в 10:03
поделиться

В документации Apple для именования переменных экземпляра не содержится явных предупреждений против использования подчеркивания в имени переменных экземпляра, как это делают документы частных методов.

Именование переменных экземпляра и типов данных

Я также помню разговор между Уилом Шипли и несколькими другими разработчиками OS X по поводу подчеркивания. Из-за того, как работает компилятор Obj-C, если бы Apple добавила новую переменную экземпляра в класс в своих фреймворках, это потребовало бы перекомпиляции всех приложений, использующих эти фреймворки. Что касается уже существующих переменных экземпляра, вы должны получить предупреждение, когда наступите на одну из них.

2
ответ дан 7 November 2019 в 10:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: