Получение ошибки EXC_BAD_ACCESS при получении данных из привычных объектов - PullRequest
0 голосов
/ 31 июля 2011

У меня было 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.Я вызываю функцию, как здесь.

 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 Ответ

1 голос
/ 31 июля 2011

Вы создаете новый объект walldata, но затем получаете объект из массива. Таким образом, вы теряете указатель на тот, который вы только что создали (утечка памяти) и освобождаете автоматически выпущенный объект из NSArray => crash

Сделайте это вместо:

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

E: Другое дело, вы статически зацикливаетесь 10 раз, я думаю, что было бы лучше, если бы вместо этого вы использовали счетчик массива, если размер массива изменяется, но вы забыли измените число в цикле for, тогда вы получите исключение, которое сломает ваше приложение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...