Атрибуты уровня класса в Objective-C (убрать предупреждение) - PullRequest
1 голос
/ 16 марта 2010

Я где-то читал, что Objective-C не имеет атрибутов уровня класса, но того же можно добиться, объявив что-то вроде этого (до интерфейса класса):

static NSInteger initCount;

Я инициализирую переменную в ноль с помощью метода initialize:

// interface
+ (void) initialize;

// implementation
+ (void) initialize {
   initCount = 0;
}

И увеличение / уменьшение при создании экземпляра / dealloc'd:

- (id) init {
    self = [super init];

    initCount++;

    return self;
}

- (void) dealloc {
    [name release];

    initCount--;

    [super dealloc];
}

Но XCode продолжает предупреждать меня, что "initCount" определен, но не используется ".

Есть ли способ решить эту проблему, или я должен просто проигнорировать предупреждение?

Ответы [ 2 ]

6 голосов
/ 16 марта 2010

Это должно идти в вашем файле реализации, а не в вашем интерфейсе. Если вы поместите его в свой заголовок, в каждом файле, который импортирует заголовок, будет создана отдельная переменная с именем initCount (поскольку статическая переменная имеет область видимости файла, а #import текстуально вставляет содержимое заголовка).

0 голосов
/ 16 марта 2010

У вас также есть переменная экземпляра с именем "initCount"? Если это так, вы ссылаетесь на это в своих методах init / dealloc, а не на глобальные.

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