我正在做一个教程,作者展示了一个示例,但是我很好奇他为什么不在函数末尾释放childController。有什么想法吗?
-(void)tableView:(UITableView *) tableView
accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath{
if (childController==nil) {
childController = [[DisclosureDetailController alloc] initWithNibName:@"DisclosureDetailController" bundle:nil];
}
childController.title=@"Disclosure Button Pressed"; //why this line?????
NSUInteger row = [indexPath row];
NSString *selectedMovie = [list objectAtIndex:row];
NSString *detailMessage = [[NSString alloc]initWithFormat:@"you pressed disclosure button for %@",selectedMovie];
childController.message = detailMessage;
childController.title = selectedMovie;
[detailMessage release];
[self.navigationController pushViewController:childController animated:YES];
}
最佳答案
看来childController是此类中的一个字段,因此(希望)在dealloc节中将其释放。
他/她实际上仅创建一次。
编辑:
在对childController进行真正的nil检查之后,它将获得保留计数1并将其分配给该字段。如果未过早实现childController,则在整个类的实例的生存期内将仅执行一次。