NSMutableArray值变为“无效”

时间:2009-11-09 17:53:15

标签: objective-c cocoa nsmutablearray

我正在尝试在tableview中显示数据库信息,然后在视图中显示详细信息我的问题如下:

我创建了NSMutableArrayNSMutableArray *myArray = [[NSMutableArray alloc]init]; 然后我将其填入数据库MyObj *obj = [[MyObj alloc]initWithName:idObj];

当我在tableview cellForRowAtIndexPath:方法中显示值时,一切都很顺利,但是当我尝试在didSelectRowAtIndexPath:方法中加载相同的数组时,数组中的值是“无效的”。 / p>

NSMutableArray声明如下:

@property (nonatomic, retain) NSMutableArray *myArray;

以下是代码:

.h文件

NSMutableArray *antrosArray; 

@property(nonatomic, retain) NSMutableArray *antrosArray; 

.m文件

@synthesize antrosArray; 

//filling the array: 

Antro *antro = [[Antro alloc]initWithName:idAntro nombre:aName]; 
[self.antrosArray addObject:antro];

我的问题是:

当我从cellForRowAtIndexPath: tableView方法访问数组时,一切正常,但是当用户选择一条记录时,我试图用didSelectRowAtIndexPath:方法读取数组,并且我的数组中的所有值都是无效。

数组在那里,也是对象,但是对象的值是空的,cellForRowAtIndexPath:方法正在清理数组。

2 个答案:

答案 0 :(得分:3)

您似乎正在定义名为myArray的第二个局部变量。你应该做的是

self.myArray = [[[NSMutableArray alloc] init] autorelease];

事实上,您可能应该使用-initWithCapacity:相反,但这是另一回事。

编辑:感谢Chuck指出我遗漏的自动释放:)

答案 1 :(得分:0)

在定义过程中也使用retain