Объявление переменных в интерфейсе или реализации?

#objective-c #variables

#objective-c #переменные

Вопрос:

В objective-c я могу объявить int или bool etc в .m файле, вне какой-либо функции. Это позволяет мне использовать такую переменную везде в классе.

Я также могу объявлять такие переменные в .h файле, внутри блока интерфейса, добиваясь того же результата.

Ну, мой вопрос: в чем разница? Есть ли? Или все дело в организации?

Ответ №1:

Во втором случае это глобальная переменная, имеющая внешнюю связь. Это означает, что к нему можно получить доступ к другим единицам перевода / исходным файлам, используя extern ключевое слово. Но в первом случае это часть интерфейса, поэтому он может использоваться только его функциями-членами и любыми другими интерфейсами, производными от этого интерфейса, в зависимости от спецификатора доступа.

Ответ №2:

В первом случае они становятся глобальными переменными в файле .m и являются общими для всех экземпляров интерфейса. Во втором случае они будут отдельными для нескольких экземпляров. Обычным способом является объявление переменных интерфейса с помощью in the interface