删除自动释放的UIWebview会导致崩溃

时间:2011-12-01 01:26:57

标签: iphone uiwebview

我有一个包含子视图的视图,子视图又包含UIWebview。

子视图已分配并自动释放

theController = [[[viewContainer alloc] initWithNibName:@"viewContainer" bundle:[NSBundle mainBundle]]  autorelease];

webview的内容加载在子视图中的ViewDidLoad上。

我可以毫无问题地删除此子视图 - 只要应用程序之前没有转到后台! webview包含一个链接 - 当用户点击它时,应用程序转到后台,Safari打开链接。到现在为止还挺好。当我现在返回应用程序并尝试删除包含webview的子视图时,我收到此错误:

bool _WebTryThreadLock(bool), 0x7f3e970: 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...

[编辑]

没有真正找到解决方案,只是一个解决方法(感谢Jumhyn的帮助!):

我在保存webview的子视图中添加了NSNotification。 当我获得applicationDidBecomeActive-Notification时,我只是再次使用我在viewDidLoadMethod中使用的相同NSURLrequest并重新加载webview的内容。 现在我可以安全地删除视图而不会出现错误......

非常奇怪的行为......

1 个答案:

答案 0 :(得分:1)

当你不打算长时间使用该对象时,你真的只想使用autorelease。相反,使用实例变量来保存视图控制器,并在dealloc方法中使用release它。此外,您可以将项目转换为ARC,从而完全无需retainrelease来电。