Какой класс переменной Objective-C это? - PullRequest
3 голосов
/ 09 июня 2009

Я пробираюсь через некоторый код Objective C, который я не написал, и нашел стиль объявления переменной, с которым я незнаком. Может кто-нибудь сказать мне область действия переменной 'myVar' в реализации класса ниже? Обратите внимание, что это появляется в файле .m, а не в описании интерфейса.

@implementation MyClass
@synthesize ivar1, ivar2;

NSString* myVar; // <- What is the intent?

- (id)init {

...

@end

Мне кажется, что намерение похоже на намерение переменной-члена. Каковы преимущества объявления переменной таким образом вместо использования ивара в объявлении @interface?

Ответы [ 3 ]

9 голосов
/ 09 июня 2009

Это просто старая глобальная переменная. Есть только один его экземпляр, и к нему может обращаться любой код в том же файле единица перевода (последний файл, который вы получите после запуска препроцессора). Другие единицы перевода (то есть другие файлы .m) также могут обращаться к этой глобальной переменной, но для этого им необходимо использовать оператор extern:

extern NSString *myVar;

extern говорит, что «это имя глобальной переменной, но оно определено в другой единице перевода». Компоновщик разрешает все объявления extern во время ссылки.

2 голосов
/ 09 июня 2009

глобальная переменная с плохим именем ...

1 голос
/ 09 июня 2009

Я не слишком опытен в ObjC, но я бы сказал, что это глобально.

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