我有泄漏问题。在这个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__]];
}
答案 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
分配sessionArrayNSMutableArray *sessionsArray = [[[NSMutableArray alloc] initWithArray:[BBWorkoutSession fetchSessionDetail1:selectedWorkoutId]] autorelease];