从自定义对象获取数据期间获取错误EXC_BAD_ACCESS

时间:2011-07-31 10:53:04

标签: iphone nsmutablearray

我有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>",

由于

1 个答案:

答案 0 :(得分:1)

您创建了一个新的walldata对象,但随后您将从该数组中获取该对象。所以你丢失了指向你刚创建的指针(内存泄漏)并从NSArray =&gt;中释放自动释放的对象碰撞

请改为:

-(void) facebookDisplayFunction:(int)atIndex 
{
     FacebookWallData* wall = nil;
     wall = [facebook_wallDataArray objectAtIndex:atIndex];
     [tableList addObject:wall.messages];
}

E:另外一件事,你是静态循环10次,我认为如果你使用数组的数量会更好,如果数组的大小改变但是你忘记了要更改for循环中的数字,您将获得一个异常,这将破坏您的应用程序。