Почему автор не делает релиз по childController в следующем сегменте кода? - PullRequest
0 голосов
/ 01 мая 2011

Я делал урок, и автор показывает пример, однако мне любопытно, почему он не выпускает 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];

    }

Ответы [ 2 ]

5 голосов
/ 01 мая 2011

Кажется, что childController - это поле в этом классе, и поэтому (мы надеемся) освобождает его в разделе dealloc.

Он / она фактически создает его только один раз.

Редактировать:

После проверки нулевого значения на childController он получает счет удержания 1и назначен на поле.Если childController не выпущен преждевременно, это будет сделано только один раз за время существования экземпляра всего этого класса.

1 голос
/ 01 мая 2011

Он держит childController как ивара, так что, вероятно, он будет выпущен в методе dealloc класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...