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

Я хранил данные пользовательских объектов в массиве.Я получаю данные из массива пользовательских объектов в функции.когда я вызываю функцию в первый раз, она работает хорошо, но когда я вызываю ее снова и снова, я получаю EXC_BAD_ACCESS.

Вот подробности функции.

-(void) facebookDisplayFunction:(int)atIndex {


FacebookWallData *wall = (FacebookWallData *)[facebook_wallDataArray objectAtIndex:atIndex];


NSString *friendID= wall.actor_id;
NSString *linkFetch= wall.permalink;
NSString* postID=wall.postId;

NSNumber *countNumber;

NSString *friendName=@"";
NSString* profileThumImage=@"";

for(int i=0; i< [facebook_LikesArray count];i++) {

    FacebookLikes* countValues=[[FacebookLikes alloc]init];
    countValues=[facebook_LikesArray objectAtIndex:i];

 //   NSLog(@" postId_wall %@  LikePostId = %@",postID,countValues.PostID);
    if([postID isEqualToString:countValues.PostID]) {
        countNumber=countValues.Count;

        if(countNumber>0) 
            friendID=countValues.Friends;

        [countValues release];
        break;
    }

    [countValues release];
}


for(int i=0;i< [facebook_FreindsArray count];i++) {

    FacebookFreinds* friendsRecord=[[FacebookFreinds alloc]init];
    friendsRecord=[facebook_FreindsArray objectAtIndex:i];

    if([friendID isEqualToString:friendsRecord.UID]) {
        friendName=friendsRecord.name;
        profileThumImage=friendsRecord.pic_smal;
        [friendsRecord release];
        break;
    }
    [friendsRecord release];
 }

// Adding values in table //





[imageData addObject:@"facebook.png"]; 
[tableList addObject:wall.messages];
[profileUserName addObject:friendName];
[linksOfFacebookData addObject:linkFetch];
[RetweetAndLikeData addObject:@"5"];
[favedProfileThumb addObject:profileThumImage];
[twitterPostID addObject:@""];
[eachPostUID addObject:friendID];

  [wall release];

}

И вот я вызываю функцию.[self facebookDisplayFunction: 0];[self facebookDisplayFunction: 0];// EXC_BAD_ACCESS здесь ошибка.

Ответы [ 2 ]

0 голосов
/ 31 июля 2011

Почему вы выделяете объект, подобный этому FacebookLikes* countValues=[[FacebookLikes alloc]init], а затем присваиваете этой же переменной экземпляр внутри массива с этим кодом countValues=[facebook_LikesArray objectAtIndex:i], а позже вы освобождаете его с этим [countValues release]?Вы не знаете, что делаете.

Попробуйте изменить это:

FacebookLikes* countValues=[[FacebookLikes alloc]init];
countValues=[facebook_LikesArray objectAtIndex:i];

на это

FacebookLikes* countValues = [facebook_LikesArray objectAtIndex:i];

и удалите все вхождения [countValues release].Сделайте то же самое для friendsRecord во втором цикле for.Кроме того, что такое [wall release]?Удалите его!

Вы не должны выделять ни один из этих объектов, потому что вы фактически получаете их из этого массива, а не создаете новый экземпляр.Это просто создает утечку в вашем коде.Вы не должны освобождать какие-либо из этих объектов, потому что они хранятся в массиве, и он отвечает за их освобождение всякий раз, когда они удаляются из массива или после уничтожения / освобождения массива.Пожалуйста, rtfm

0 голосов
/ 31 июля 2011

Если в строке появляется ошибка:

 [self facebookDisplayFunction:0];

, мне кажется, что, скорее всего, объект, на который указывает self, был освобожден.Таким образом, проблема не будет в facebookDisplayFunction ...

Не могли бы вы просмотреть, как вы создаете объект, на который указывает self, или опубликовать код, если вам нужна дополнительная помощь?

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