Зачем объявлять переменные как статические в методе класса Objective-c? - PullRequest
1 голос
/ 11 августа 2011

Я не понимаю, почему переменные объявляются как static в методах класса Objective-c?

Какова область действия static переменных?

Ответы [ 2 ]

3 голосов
/ 11 августа 2011

static переменные не уничтожаются, когда их кадр стека выталкивается из стека (обычные переменные делают, иначе вы получите эпические утечки памяти). Рассматривайте их как глобальные переменные, к которым вы можете обращаться только локально. Они останутся в живых, пока не закончится вся программа.

Пример:

+ (id)sharedInstance {
  static singletonInstance = nil; // for example
  if (singletonInstance == nil) {
    singletonInstance = [[self alloc] init];
  }
  return singletonInstance;
}
1 голос
/ 11 августа 2011

Область видимости находится на уровне файлов, как и в C. И поскольку она статическая, переменная останется на время жизни приложения, и все экземпляры класса будут иметь к ней доступ.Хорошими примерами могут быть ссылки на единичный экземпляр, реализация глобального счетчика или какая-то блокировка ресурса.

...