Цель C: различные переменные поведения в файле заголовка (.h) и файла реализации (.m) - PullRequest
3 голосов
/ 12 июля 2010

Может кто-нибудь объяснить, пожалуйста, разницу Objective-C между myString и anotherString в следующем фрагменте:

   // In .h file
   @interface MyClass : NSObject {
 NSString* myString;
   }
   @end

   // In .m file
   @interface MyClass ()
   NSString* anotherString;
   @end

   @implementation MyClass
   //...
   @end

Спасибо!

Ответы [ 2 ]

4 голосов
/ 12 июля 2010

В файле .h вы объявляете переменную экземпляра.Каждый объект будет иметь свой объект.

В файле реализации вы объявляете глобальную переменную (тот факт, что она находится в категории, ничего не меняет).Поэтому значение этой переменной будет одинаковым независимо от экземпляра объекта.

Обратите внимание, что это часто полезно для имитации переменных класса, но с ключевым словом static, поэтому переменная доступна только изфайл реализации.

2 голосов
/ 12 июля 2010

В файле .m @interface MyClass() на самом деле является категорией, а не надлежащим объявлением интерфейса. Разница в том, что категории могут не добавлять переменные экземпляра, только методы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...