实例方法目标中的内存泄漏

时间:2011-06-24 05:31:40

标签: iphone

我有泄漏问题。在这个editingSessionArray中 在下面这一行:

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

说Method返回一个带有+1保留计数的目标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__]];
}

1 个答案:

答案 0 :(得分: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];
相关问题