В наше время вы бы использовали dispatch_once()
для одноразовой инициализации. Xcode имеет удобный шаблон, встроенный для выполнения именно этого.
<Ч />
NSArray никогда не является статически размещенным объектом и, следовательно, не может быть инициализатором статической переменной.
Сделайте что-то вроде:
@implementation Recipe
+ (NSArray *) basicHam {
static NSArray *hams;
if (!hams)
hams = [[NSArray alloc] initWithObjects:[NSNumber numberwithInt:1], [NSNumber numberwithInt:2], [NSNumber numberWithInt:3], [NSNumber numberwithInt:4], nil];
return hams;
}
<Ч />
Однако обратите внимание на пару вещей:
Я немного изменил ваш код. Вы не выделяете, тогда numberWithInt:
и NSNumber
. Это не сработает.
Я добавил nil
в конце списка аргументов. Это необходимо.
И, тем не менее, следует заметить, что массив, который эффективно содержит небольшой набор натуральных счетных чисел в порядке без пробелов, довольно явно странен. Каждый раз, когда x = foo[x]
является выражением идентичности, оно обычно указывает, что в используемых шаблонах есть что-то явно странное.