#objective-c #variables
#objective-c #переменные
Вопрос:
В objective-c я могу объявить int
или bool
etc в .m
файле, вне какой-либо функции. Это позволяет мне использовать такую переменную везде в классе.
Я также могу объявлять такие переменные в .h
файле, внутри блока интерфейса, добиваясь того же результата.
Ну, мой вопрос: в чем разница? Есть ли? Или все дело в организации?
Ответ №1:
Во втором случае это глобальная переменная, имеющая внешнюю связь. Это означает, что к нему можно получить доступ к другим единицам перевода / исходным файлам, используя extern
ключевое слово. Но в первом случае это часть интерфейса, поэтому он может использоваться только его функциями-членами и любыми другими интерфейсами, производными от этого интерфейса, в зависимости от спецификатора доступа.
Ответ №2:
В первом случае они становятся глобальными переменными в файле .m и являются общими для всех экземпляров интерфейса. Во втором случае они будут отдельными для нескольких экземпляров. Обычным способом является объявление переменных интерфейса с помощью in the interface