我正在做一个教程,作者展示了一个示例,但是我很好奇他为什么不在函数末尾释放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,则在整个类的实例的生存期内将仅执行一次。

09-30 12:49