我有10个自定义对象存储在数组中。这是我的代码。 facebook_wallDataArray是NSMUtable数组。
for(int i=0;i<10;i++) {
FacebookWallData* wallPost=[[FacebookWallData alloc]init];
wallPost.messages=@"Wall Values";
[facebook_wallDataArray addObject:wallPost];
[wallPost release];
}
现在我有一个在TableView Array中存储对象值的函数。我在这里调用函数。
for(int i=0;i<10;i++) {
[self faceboookDisplay:i]
}
这是我的功能体。
-(void) facebookDisplayFunction:(int)atIndex {
FacebookWallData* wall=[[FacebookWallData alloc]init];
wall=[facebook_wallDataArray objectAtIndex:atIndex];
[tableList addObject:wall.messages];
[wall release];
}
但是我的程序因EXC_BAD_ACCESS异常而崩溃。我没有得到我的代码错在哪里? facebook_wallDataArray存储了这样的值。它是NSMUtableArray。
"<FacebookWallData: 0x4c52ee0>",
"<FacebookWallData: 0x4c52df0>",
"<FacebookWallData: 0x6828300>",
"<FacebookWallData: 0x6826d50>",
"<FacebookWallData: 0x4e25a10>",
"<FacebookWallData: 0x9317c60>",
"<FacebookWallData: 0x4c53190>",
"<FacebookWallData: 0x4e47e90>",
"<FacebookWallData: 0x4c53380>",
"<FacebookWallData: 0x93176e0>",
由于
答案 0 :(得分:1)
您创建了一个新的walldata对象,但随后您将从该数组中获取该对象。所以你丢失了指向你刚创建的指针(内存泄漏)并从NSArray =&gt;中释放自动释放的对象碰撞
请改为:
-(void) facebookDisplayFunction:(int)atIndex
{
FacebookWallData* wall = nil;
wall = [facebook_wallDataArray objectAtIndex:atIndex];
[tableList addObject:wall.messages];
}
E:另外一件事,你是静态循环10次,我认为如果你使用数组的数量会更好,如果数组的大小改变但是你忘记了要更改for循环中的数字,您将获得一个异常,这将破坏您的应用程序。