NSMutableArray addObject错误

时间:2010-12-28 15:02:06

标签: iphone objective-c nsmutablearray

我无法将addObject添加到'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)

3 个答案:

答案 0 :(得分:12)

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

easyQArray = [[NSMutableArray alloc] init];  

答案 1 :(得分:0)

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

可能缺失的一行:

easyQArray = [[NSMutableArray alloc] init];

答案 2 :(得分:0)

即使你移动它也应该工作.h。
确保初始化easyQArray。并确保将其初始化为NSMutableArray 应在addObject

中执行[easyQArray addObject: [myArray objectAtIndex: easyQStartPos]];之前进行初始化