Я NSObject, соответствующий протоколу UIAlertViewDelegate - это уместно, чтобы освободить себя? - PullRequest
1 голос
/ 30 марта 2011

У меня есть подкласс NSObject (MyCustomObject), который создается и вызывается для выполнения некоторой логики и принятия решения, отображать ли UIAlertView. MyCustomObject реализует протокол UIAlertViewDelegate для выполнения дополнительной логики и установки некоторых NSUserDefaults в alertView: clickedButtonAtIndex :. Где уместно выпустить myCustomObject? Если myCustomObject больше не нужен после того, как пользователь нажимает одну из кнопок в представлении предупреждений, то myCustomObject может освободить себя в alertView: didDismissWithButtonIndex:?

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
    NSLog(@"I'm UIAlertView's Delegate and I'm releasing myself");
    [self release];
}

1 Ответ

2 голосов
/ 30 марта 2011

Я думаю, что было бы лучше, если бы вы создали протокол делегирования для своего пользовательского объекта, а затем владелец этого объекта был бы его делегатом.В методе делегата представления предупреждений вашего класса отправьте пользовательскому делегату сообщение, чтобы он мог обработать освобождение вашего пользовательского объекта.

Если объект автоматически высвобождается в вызывающем коде или вызывающий код пытается вручную освободить сам ваш объектпопытка самостоятельного освобождения может привести к неожиданному поведению или даже к аварийному завершению.

...