То, что вы пытаетесь сделать, допустимо, но если приведенные выше комментарии верны, и это связано с ошибкой в AppCode и полученным предупреждением, это приводит к серьезным последствиям (например, при использовании -Werror) или вам просто неприятно его получать, вы можете обойти его, просто разместив массив внутри -init .
Справедливое предупреждение: этот код отключеннаверху моей головы, и я не гарантирую, что он будет работать так, как написано.
@implementation MonthView {
DayView ***dayViews;
}
@interface MonthView
- (id)init {
if ((self = [super init])) {
int i;
// do stuff here
// Create the array
dayViews = malloc(sizeof(id) * 6);
dayViews[0] = malloc(sizeof(DayView *) * 6 * 7);
for (i = 1; i < 6; i++) {
dayViews[i] = dayViews[0] + (i * 7);
}
}
return self;
}
@end
Этот код должен создавать двумерный массив, к которому вы можете обращаться как обычно, при минимальном количестве вызововчтобы malloc нужен.