2011-07-31 20 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]の出現をすべて削除します。 2番目のfor-loopのfriendsRecordについても同じ処理を行います。また、[wall release]とは何ですか?それを除く!

あなたが実際にその配列からそれらを取得し、新しいインスタンスを作成していないので、あなたは、これらのオブジェクトのいずれかを割り当てるべきではありません。それはちょうどあなたのコードのリークを作成します。これらのオブジェクトは、配列に保持され、配列から削除されるたびに、または配列が破棄/割り当て解除された後に解放されるため、解放しないでください。 、rtfm

+0

はい、それは今働いているしてください。 –

0

あなたがライン上でエラーが出た場合:

[self facebookDisplayFunction:0]; 

最も可能性が高いselfが指すオブジェクトが割り当て解除されたように私には思えます。だから、問題はないfacebookDisplayFunction ...

selfが指し示すオブジェクトをどのように作成するかを確認してください。

関連する問題