Hy
У меня есть UIView. В одном методе я выделяю WebView и устанавливаю для него свойство retain.
self->webView= [[UIWebView alloc] initWithFrame:self.frame];
Затем я начинаю загружать строку HTML. После его загрузки я изменяю размер представления и запускаю callBack для суперпредставления, чтобы изменить размер. Работает.
Моя проблема в том, что, если пользователь вернется до того, как представление будет загружено, представления будут освобождены. Тогда мой WebView бросить BAD_ACCESS.
Вот метод dealloc:
-(void)dealloc{
[self.webView setDelegate:nil];
[self.webView stopLoading];
[self setWebView:nil];
[htmlStr release];
[super dealloc];}
Трасса обратного вызова показана на скриншоте. Интересно то, что, если я не выпущу WebView, это будет похоже на шарм. Если я освобождаю WebView, то когда он освобождается, в журнале появляется сообщение об ошибке:
![bool _WebTryThreadLock(bool), 0x4e05150: Tried to obtain the web lock from a thread other than the main thread or the web thread. This may be a result of calling to UIKit from a secondary thread. Crashing now...][1]
РЕДАКТИРОВАТЬ: это было исправлено. Получается, что мой метод загрузки изображения был виновен. Я начал новый поток (NSOperationQueue и NSInvocationOperation в этом), чтобы загрузить изображение, и сделать executeSelectorOnMainThred: когда он закончится. Тем не менее, я загружал более ста маленьких (1-2 КБ) изображений на каждом переключателе страниц, что было очень большой нагрузкой. Когда я написал метод, который загружал изображения в один поток один за другим, эта ошибка больше никогда не появлялась