Хорошо, у меня есть страшная EXC_BAD_ACCESS, которую я не могу отследить, но это происходит только при моей второй загрузке UIWebView. Я искал и рассматривал все подобные проблемы в SO и пробовал несколько разных подходов, но я все еще борюсь.
Вот поток программы, который наконец загружает WebView.
У меня есть табличное представление, в котором перечислены видео.
При щелчке строки загружается подробный вид с дополнительной информацией. о видео.
После загрузки подробного представления, если пользователь нажимает кнопку Воспроизвести, загружается другое представление с WebView.
В этом представлении в viewDidLoad NSURLRequest создается и передается в WebView loadRequest.
WebView загружается нормально и отображает веб-страницу с нужным мне видео. Все это находится на контроллере навигации, поэтому пользователь может нажать кнопку «Назад» и вернуться к предыдущему подробному виду.
Я освобождаю WebView в dealloc, а также прекращаю его загрузку, если он все еще делал это. WebView получается через IBOutlet и синтезируется как (неатомный, сохраняемый).
У меня есть NSZombiesEnabled, и я не видел там никаких проблем. Так, когда это терпит крах? Если пользователь нажимает кнопку «Воспроизвести» второй раз, просмотр видео создается снова и в [webView loadRequest] - я получаю EXC_BAD_ACCESS после загрузки страницы.
Вот кикер, хотя, если я вернусь к Таблице и выберу другую строку (видео), то я могу загрузить этот WebView без каких-либо проблем. Только если я дважды загружаю одно и то же видео, оно падает.
Вид, содержащий веб-представление, освобождается после его создания и нажатия на навигационную панель. контроллер. Я установил тонну точек останова - все (при второй загрузке) хорошо до тех пор, пока не будет вызван webViewDidFinishLoad, что бы ни случилось после этого, это вызывает сбой. Я не получаю трассировку стека (или не знаю, как ее найти):)
Спасибо!
Вот код из представления WebView - некоторые из них основаны на выводах других людей о проблемах памяти с UIWebView.
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"Video Player";
NSURL *url = [NSURL URLWithString:video.url];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webView loadRequest:request];
}
- (void)viewDidUnload {
[super viewDidUnload];
[webView setDelegate:nil];
[self setWebView:nil];
}
- (void)dealloc {
[video release];
[super dealloc];
}