【问题标题】:NSMutableArray addObject mistakeNSMutableArray addObject 错误
【发布时间】:2010-12-28 15:02:05
【问题描述】:

我无法将对象添加到“easyQArray”(NSMutableArray)中。当我在本地定义数组时它确实有效,但是当我将声明移动到 .h 文件时它不再有效。

当我尝试访问数组中不存在的索引时应用程序崩溃:

// Create question arrays
if (easyPlayers > 0) {
    for (int XX = 0; XX < easyQuestions; XX++) {
        [easyQArray addObject: [myArray objectAtIndex: easyQStartPos]];
        NSLog(@"myArray: %@", [myArray objectAtIndex: easyQStartPos]);
        NSLog(@"easyQArray: %@", easyQArray);
        easyQStartPos = easyQStartPos + 1;
    }
}

输出:

2010-12-28 15:52:57.636 XX_v2[11582:207] myArray: 205
2010-12-28 15:52:57.636 XX_v2[11582:207] easyQArray: (null)
2010-12-28 15:52:57.636 XX_v2[11582:207] myArray: 71
2010-12-28 15:52:57.637 XX_v2[11582:207] easyQArray: (null)
2010-12-28 15:52:57.637 XX_v2[11582:207] myArray: 94
2010-12-28 15:52:57.638 XX_v2[11582:207] easyQArray: (null)
2010-12-28 15:52:57.638 XX_v2[11582:207] myArray: 133
2010-12-28 15:52:57.638 XX_v2[11582:207] easyQArray: (null)
2010-12-28 15:52:57.639 XX_v2[11582:207] myArray: 142
2010-12-28 15:52:57.640 XX_v2[11582:207] easyQArray: (null)

【问题讨论】:

    标签: iphone objective-c nsmutablearray


    【解决方案1】:

    似乎你甚至没有初始化你的数组。根据您的描述,听起来您将其声明为属性,因此在您的类 init 方法中调用 alloc / init 应该可以解决您的问题。

    easyQArray = [[NSMutableArray alloc] init];  
    

    【讨论】:

    • 也不要忘记在 dealloc 中释放它。
    【解决方案2】:

    easyQArray 已定义,但它分配在哪里? (我的猜测是它不是你的日志显示它是 nil)

    可能缺少的行:

    easyQArray = [[NSMutableArray alloc] init];
    

    【讨论】:

      【解决方案3】:

      即使您移动了它也应该可以工作 .h。
      确保初始化您的easyQArray。并确保将其初始化为 NSMutableArray
      [easyQArray addObject: [myArray objectAtIndex: easyQStartPos]]; 中执行addObject 之前应该进行初始化

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-25
        • 2010-12-22
        • 2011-04-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多