Когда остановить UIViewController от приема вызовов делегатов - PullRequest
0 голосов
/ 20 мая 2010

В каком методе UIViewController я должен установить на ноль все вхождения контроллера представления как делегата? Это viewDidUnload (слишком рано?), Dealloc (слишком поздно?) Или что-то еще?

1 Ответ

0 голосов
/ 20 мая 2010

Чтобы избежать EXC_BAD_ACCESS, вы должны установить для свойств делегата значение nil в вашем dealloc. Это гарантирует, что другие объекты не будут пытаться отправлять сообщения делегата вашему объекту после его отмены. Например, если ваш UIViewController имеет свойство webView, для которого это UIWebViewDelegate, вы должны сделать:

- (void)dealloc {
    self.webView.delegate = nil;
    self.webView = nil; // assuming @property (nonatomic, retain), or use [webView release] if you prefer.
    [super dealloc];
}

Вы можете установить делегат равным nil ранее, если вы хотите прекратить получать сообщения делегатов по какой-то другой причине, но это не обязательно, если вы просто пытаетесь избежать EXC_BAD_ACCESS.

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