переменные, объявленные в @implementation - PullRequest
3 голосов
/ 17 июня 2010

Я работаю с листингом кода из книги, и в нем есть пара переменных (в частности, NSString *), объявленных и инициализированных в @implementation, а не в @interface, но вне тела любого метода.Я не видел этого раньше, и мне интересно, что это меняет в области видимости и т. Д.

Я быстро взглянул на язык программирования Objective C, но не вижу ничего описывающегокакой эффект это имеет.

Спасибо

Энди

1 Ответ

8 голосов
/ 17 июня 2010

Переменные, объявленные внутри @implementation, имеют глобальную область действия.

Если вы объявите их как «статические», они будут видны только из методов в том же исходном файле.

Итак:

@implementation MyClass

NSString *myString; // global scope, and accessible by all code in your project

или

@implementation MyClass

static NSString *myString; // global scope, but only accessible by code 
                           // in this source file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...