Чтобы избежать 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.