2011-07-31 4 views
0

Array에 사용자 지정 개체 데이터를 저장했습니다. 함수의 사용자 정의 객체 배열에서 데이터를 가져옵니다. 처음으로 함수를 호출 할 때 제대로 작동하지만 반복해서 호출 할 때 EXC_BAD_ACCESS가 표시됩니다.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 *[email protected]""; 
NSString* [email protected]""; 

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 오류가 있습니다. 당신은 줄에 오류가 발생하는 경우

답변

0

왜이 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]의 모든 항목을 제거합니다. 두 번째 for-loop에있는 friendsRecord에 대해 동일하게 수행하십시오. 또한 [wall release]은 무엇입니까? 그것을 제거하십시오!

실제로 이러한 배열에서 배열을 가져오고 새 인스턴스를 만들지 않기 때문에 이러한 개체를 할당하지 마십시오. 코드에서 누수가 발생합니다. 이러한 객체는 배열에 의해 유지되고 배열에서 제거 될 때마다 또는 배열이 소멸/할당 해제 된 후에 해제 될 수 있기 때문에 해제하지 않아야합니다. 제발, rtfm

+0

예 지금 작동 중입니다. –

0

는 :

[self facebookDisplayFunction:0]; 

가능성이 높습니다 self가 가리키는 객체가 해제 된 그 날 것으로 보인다. 문제가 facebookDisplayFunction ...

self이 가리키는 개체를 만드는 방법을 검토하거나 도움이 더 필요하면 코드를 게시 할 수 있습니까?

관련 문제