Поскольку NSArrays
и MyObjectTypes
являются объектами, выделенными в куче, вы не можете создавать их в статическом контексте.Вы можете объявить переменные, а затем инициализировать их в методе.
Так что вы не можете сделать:
static NSArray *myStaticArray = [[NSArray alloc] init....];
Вместо этого вы должны сделать:
static NSArray *myStaticArray = nil;
- (void) someMethod {
if (myStaticArray == nil) {
myStaticArray = [[NSArray alloc] init...];
}
}
Это случается при работе с константными строками (@"foo"
и т. Д.), Потому что они не выделяются в куче.Они жестко запрограммированы в двоичном коде.