2011-12-23 4 views
2
@implementation MonthView { 
    DayView *dayViews[6][7]; 
} 

Xcode не жалуюсь об этом коде, но AppCode дает предупреждение:AppCode предупреждение о массиве C-типа в классе Objective-C

Указатель на неконстантного «DayView типа * const * 'без явного времени жизни

Мое намерение состояло в создании блока указателей DayView размером 6x7, который будет частью макета памяти любого экземпляра MonthView.

Этот код делает то, что я хочу, и как я могу исправить это предупреждение?

+0

Вы компилируете с настройкой ARC? – dasblinkenlight

+0

Да, я использую ARC. – titaniumdecoy

+0

Где это предупреждение происходит? –

ответ

1

То, что вы пытаетесь сделать, действительно, но если приведенные выше комментарии верны, и это связано с ошибкой в ​​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 

Этот код должен производить двумерный массив, который вы можете получить доступ в обычном режиме, при минимизации числа вызовов таНоса необходимых.

Смежные вопросы