В настоящее время я создаю пользовательские ячейки табличного представления для iPhone, используя [[NSBundle mainBundle] loadNibNamed: owner: option:] для загрузки пера.При профилировании приложения происходит утечка памяти каждый раз, когда я открываю представление с помощью этих пользовательских ячеек таблицы.Инструменты утечки указывают мне на строку [[NSBundle mainBundle] loadNibNamed: owner: option:].Вот мой код:
static NSString *challengeCellIdentifier = @"challengeListTableCell";
//NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
ChallengeListTableCell *cell = (ChallengeListTableCell *) [tableView dequeueReusableCellWithIdentifier:challengeCellIdentifier];
if (cell == nil) {
NSArray *topLevelObjects = [[NSBundle mainBundle]
loadNibNamed:@"ChallengeListTableCell"
owner:nil options:nil];
for (id currentObject in topLevelObjects) {
if([currentObject isKindOfClass:[ChallengeListTableCell class]]){
cell = (ChallengeListTableCell *) currentObject;
break;
}
}
}
// Configure the cell...
if(indexPath.row == 0){ // top
[cell.backgroundImg setImage:[UIImage imageNamed:@"topMenuBar.png"]];
[cell.selectedBackgroundImg setImage:[UIImage imageNamed:@"topMenuBarOn.png"]];
}else if(indexPath.row == [challenges count]-1){ //bottom
[cell.backgroundImg setImage:[UIImage imageNamed:@"bottomMenuBar.png"]];
[cell.selectedBackgroundImg setImage:[UIImage imageNamed:@"bottomMenuBarOn.png"]];
}else{ //middle
[cell.backgroundImg setImage:[UIImage imageNamed:@"middleMenuBar.png"]];
[cell.selectedBackgroundImg setImage:[UIImage imageNamed:@"middleMenuBarOn.png"]];
}
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { //ipad
[cell.title setFont:[UIFont fontWithName:@"MuseoSans-500" size:40.0f]];
}else{ //iphone
[cell.title setFont:[UIFont fontWithName:@"MuseoSans-500" size:20.0f]];
}
Challenge * challenge = [challenges objectAtIndex:indexPath.row];
[cell.title setText:challenge.title];
if([challenge.completed boolValue]){
[cell.checkImage setImage: [UIImage imageNamed:@"checkComplete.png"]];
} else {
[cell.checkImage setImage: [UIImage imageNamed:@"checkNotComplete.png"]];
}
return cell;
Документация гласит, что массив, возвращенный из loadNibNamed: owner: options: это объект с автоматическим выпуском, поэтому я не понимаю, почему это вызывает утечку.У кого-нибудь еще была такая проблема?