Где искать сделку? - PullRequest
       2

Где искать сделку?

0 голосов
/ 04 июня 2011

В модальном представлении у меня есть UIPickerView, который выделен и инициализирован в viewDidLoad.

Он освобождается в dealloc с другими объектами, используемыми в этом представлении.

Это неправильный способ освобождения моего сборщика? Зачем к нему нужно обращаться после того, как модальное представление отклонено, поскольку сообщение об ошибке, кажется, предлагает?

Ошибка журнала зомби:

-[UIPickerView release]: message sent to deallocated instance 0x5a441

Соответствующий код:

- (void)viewDidLoad
{
    [super viewDidLoad];

    //navigation bar stuff here

    mcPickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 244, 320, 216)];
    mcPickerView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin;

    // setup the data source and delegate for this picker
    mcPickerDataSource = [[MCPickerDataSource alloc] init];
    mcPickerView.dataSource = mcPickerDataSource;
    mcPickerView.delegate = mcPickerDataSource;

    mcPickerView.showsSelectionIndicator = YES;
    [self.view addSubview:mcPickerView];
}

- (void)dealloc
{
    [mc dealloc];
    [mcPickerView dealloc];
    [mcPickerDataSource dealloc];
    [mcVal release];
    [super dealloc];
}

Ответы [ 3 ]

1 голос
/ 04 июня 2011

В вашем методе dealloc ваш [mcPickerView dealloc], вероятно, также имеет для вас значение mcPickerDataSource, поскольку mcPickerView содержит ссылки на mcPickerDataSource.Измените ваш метод dealloc, чтобы освободить все, кроме super, чтобы решить проблему.

1 голос
/ 04 июня 2011

все, что размещено в viewDidLoad: должно быть освобождено, а не dealloc'd, в viewDidUnload. Это связано с тем, что viewDidLoad и viewDidUnload могут вызываться несколько раз в течение срока службы объекта. Dealloc вызывается только один раз за время существования объекта.

1 голос
/ 04 июня 2011

Вы должны вызывать Deloc только на Super. Все остальное должно быть выпущено.

Этот ответ объяснит почему: iPhone SDK: Dealloc против выпуска?

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