AppCode警告Objective-C类中的C风格数组

时间:2011-12-23 21:44:14

标签: objective-c c appcode

@implementation MonthView {
    DayView *dayViews[6][7];
}

Xcode不会抱怨此代码,但AppCode会发出警告:

  

指向非const类型的'DayView * * const *',没有明确的生命周期

我的目的是创建一个6x7的DayView指针块,它将成为任何MonthView实例的内存布局的一部分。

此代码是否符合我的要求,如何修复此警告?

1 个答案:

答案 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

此代码应生成一个二维数组,您可以正常访问该数组,同时最大限度地减少对malloc所需的调用次数。