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

Xcode 不会抱怨这段代码,但 AppCode 会给出警告:

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

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

这段代码是否在做我想要的,我该如何解决这个警告?

4

1 回答 1

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 的调用次数。

于 2012-01-06T02:30:18.517 回答