2011-06-24 7 views
0

リークに問題がありました。以下、この行で このeditingSessionArrayで:インスタンスでのメモリリークメソッドの目的

は私がミスをしなかった:

NSMutableArray *sessionsArray = [[NSMutableArray alloc] initWithArray:[BBWorkoutSession fetchSessionDetail1:selectedWorkoutId]]; 

この方法は(参照によって)カウントを保持+1とObjective-Cのオブジェクトを返すことを言います。あなたのコードはここに行けば

くれ

-(void)editingSessionsArray 
{ 
    [[BBAppController sharedInstance] updateLogWithString:[NSString stringWithFormat:@"BEGIN : %s", __PRETTY_FUNCTION__]]; 
    if(selectedWorkoutId) { 
    // NSLog(@"the section id is : %@",selectedWorkoutId); 
    NSMutableArray *sessionsArray = [[NSMutableArray alloc] initWithArray:[BBWorkoutSession fetchSessionDetail1:selectedWorkoutId]]; 

    /* condition for checking the selected workout id is existing or not */ 

    if ([workOutSessionData count]) { 
     for (int i= 0; i< [workOutSessionData count] ; i++) { 
      if ([[[workOutSessionData objectAtIndex:i] allKeys] containsObject:[NSString stringWithFormat:@"%@",selectedWorkoutId]]) { 
       [workOutSessionData removeObjectAtIndex:i]; 

       return; 
      } 
     } 
    } 

    /* If console comes here the workout id is not existed in the main array */ 


    [mainDict setValue:sessionsArray forKey:[NSString stringWithFormat:@"%@",selectedWorkoutId]]; 

    NSMutableDictionary *workoutsList = [[NSMutableDictionary alloc]initWithObjectsAndKeys:sessionsArray,[NSString stringWithFormat:@"%@",selectedWorkoutId],nil] ; 
    [workOutSessionData addObject:workoutsList]; 
    [workoutsList release]; 
    [sessionsArray release]; 
    } 
    [[BBAppController sharedInstance] updateLogWithString:[NSString stringWithFormat:@"END : %s", __PRETTY_FUNCTION__]]; 
} 

答えて

4

を助けてください:

if ([workOutSessionData count]) { 
for (int i= 0; i< [workOutSessionData count] ; i++) { 
    if ([[[workOutSessionData objectAtIndex:i] allKeys] containsObject:[NSString stringWithFormat:@"%@",selectedWorkoutId]]) { 
     [workOutSessionData removeObjectAtIndex:i]; 

     return; 
    } 
} 

}

あなたはworkoutListとsessionArrayを解除せずに返します。 autoreleaseを使用してsessionArrayを割り当てる必要があります。

NSMutableArray *sessionsArray = [[[NSMutableArray alloc] initWithArray:[BBWorkoutSession fetchSessionDetail1:selectedWorkoutId]] autorelease]; 
+0

+1良い目には、 2分間それを見て、それを見ていない。 – Cyprian

関連する問題