繁体   English   中英

关于Objective-C类中C样式数组的AppCode警告

[英]AppCode warning about a C-style array in an Objective-C class

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

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

指向没有显式生存期的非常量类型'DayView * * const *'的指针

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

这段代码是否在执行我想要的操作,如何解决此警告?

您尝试做的事是有效的,但是如果上面的注释是正确的,并且这是由于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的调用次数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM