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

标签 objective-c c appcode

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

Xcode 不会提示这段代码,但 AppCode 会给出警告:

Pointer to non-const type 'DayView * * const * ' with no explicit lifetime

我的意图是创建一个 6x7 的 DayView 指针 block ,它将成为任何 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 调用次数。

关于objective-c - 关于 Objective-C 类中的 C 样式数组的 AppCode 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8620888/

相关文章:

iphone - iOS 编程 - 重复符号 _OBJC_IVAR

ios - 在 PresentDismiss 和 NavigateViewController 推送/弹出时遇到问题

java - 如何在 Sparkle updater(java app) 中等待用户操作?

c - 使用 AF_UNSPEC 时,getaddrinfo() 仅返回 ipv6

ios - 一台 Mac Pro 上有多个开发人员

ios - 具有自定义委托(delegate)或数据源的 View Controller 的状态保存

c++ - 快速实现大型整数计数器(在C/C++中)

ios - AppCode + swift - 没有代码完成,也没有快速文档

c - 访问结构成员时大小为 1 的读取无效