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