Iphone 构建阵列阵列

Iphone 构建阵列阵列,iphone,objective-c,xcode,Iphone,Objective C,Xcode,我正在尝试使以下循环工作以填充数组数组: while (condition) { [itemsArray fillFromDB]; if (! [checkArray containsObject:checkFlag]) { // Add existing itemsArray to myArray if (itemsArray.count) { // add the itemsArray to myArray and create a new instance of item

我正在尝试使以下循环工作以填充数组数组:

while (condition) {
[itemsArray fillFromDB];

if (! [checkArray containsObject:checkFlag]) {
  // Add existing itemsArray to myArray
  if (itemsArray.count) {
    // add the itemsArray to myArray and create a new instance of itemsArray
    [myArray addObject:itemsArray];
    [itemsArray release];
    NSMutableArray *itemsArray = [[NSMutableArray alloc] init];
  }
  [itemsArray addObject:myObject];
  [checkArray addObject:checkFlag];
} else {
  [itemsArray addObject:tmpEvent];
}  }
然而,我试图形成这个循环,它落在itemsArray的发布上

  • 当我使用release(如上所述)时,数组不会使用alloc作为新实例重新初始化。预期为空时,下一个对象将添加到旧数组中
  • 当我使用removeAllObjects时,我的数组被清空,附加到myArray的数组也被清空
我走错方向了吗?

你可能会说:

itemsArray = nil;
释放
消息之后,确保您没有指向旧实例

编辑

再看看这个,你有:

NSMutableArray *itemsArray = [[NSMutableArray alloc] init];
这是在
if
语句中确定的范围

因此,取出
NSMutableArray
,只需使用:

itemsArray = [[NSMutableArray alloc] init];

不要写
NSMutableArray*itemsArray=[[NSMutableArray alloc]init]
--您在
if
语句的范围内声明变量,因此在
if
语句之外,
itemsArray
仍将引用旧值(我不确定编译器为什么不抱怨)。您可以只说
itemsArray=[[NSMutableArray alloc]init]


您还可能希望使用自动释放来简化

其他人发现了问题,但却制造了一个新问题。第一次创建可变数组时,需要使用
NSMutableArray*itemsArray=[[NSMutableArray alloc]init]。然后,在之后,您可以
release
并使用
itemsArray=[[NSMutableArray alloc]init]。重要的是,第一个(创建指针的那个)只出现一次,其余的可以出现任意次数

编辑:
您可以编写
NSMutableArray*itemsArrayif
语句之前使用code>,然后使用
itemsArray=[[NSMutableArray alloc]init]
if
语句中。

你好,Alex,尝试了它,但导致了一个“[NSCFArray count]:方法发送到未初始化的可变数组对象”错误…你好,jrtc27,这就是我现在得到它的方式,只是在上面的代码示例中不可见,谢谢你,只是出于好奇,你会接受任何答案吗?当然,我没有按照你说的那样回应你吗?好的,我刚看到你在说什么,让我点击滴答声。。。