Как я объявляю свойства уровня класса в Objective C?

После нескольких дней царапин на голове я решил переделать конфигурацию моей функции Lambda. Похоже, проблема была вызвана OutOfMemoryError. Я увеличил память моей функции Lambda, и она начала работать.

Похоже, что во время создания KinesisClient JVM выходила из метас пространства. Я провел некоторое исследование и нашел этот поток потоков . Пожалуйста, перейдите по ссылке, чтобы просмотреть подробное обсуждение аналогичного сценария.

200
задан Jim Puls 29 March 2009 в 17:58
поделиться

3 ответа

свойства имеют определенное значение в Objective C, но я думаю, что Вы имеете в виду что-то, что это эквивалентно статической переменной? Например, только один экземпляр для всех типов Foo?

Объявить класс функционирует в Objective C, который Вы используете + префикс вместо - таким образом, Ваша реализация посмотрела бы что-то как:

// Foo.h
@interface Foo {
}

+ (NSDictionary *)dictionary;

// Foo.m
+ (NSDictionary *)dictionary {
  static NSDictionary *fooDict = nil;
  if (fooDict == nil) {
    // create dict
  }
  return fooDict;
}
187
ответ дан Erik Aigner 23 November 2019 в 05:06
поделиться

Если Вы ищете уровень класса, эквивалентный из @property, затем ответ "нет такой вещи". Но помните, @property только синтаксический сахар, так или иначе; это просто создает методы соответственно-именованного-объекта.

Вы хотите создать методы класса, что статические переменные доступа, который, как другие сказали, имеют только немного отличающийся синтаксис.

63
ответ дан Jim Puls 23 November 2019 в 05:06
поделиться

Свойства имеют значения только в объектах, не классах.

Если необходимо сохранить что-то для всех объектов класса, необходимо использовать глобальную переменную. Можно скрыть его путем объявления его static в файле реализации.

Можно также рассмотреть использование определенных отношений между объектами: Вы приписываете роль ведущего устройства к конкретному объекту Вашего класса и связываете объекты других с этим ведущим устройством. Ведущее устройство будет держать словарь как простое свойство. Я думаю о дереве как то, используемое для иерархии представления в приложениях Какао.

Другая опция состоит в том, чтобы создать объект специализированного класса, который состоит и из Вашего словаря 'класса' и из ряда всех объектов, связанных с этим словарем. Это - что-то как NSAutoreleasePool в Какао.

7
ответ дан mouviciel 23 November 2019 в 05:06
поделиться