我有一个包含子视图的视图,子视图又包含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的内容。 现在我可以安全地删除视图而不会出现错误......
非常奇怪的行为......
答案 0 :(得分:1)
当你不打算长时间使用该对象时,你真的只想使用autorelease
。相反,使用实例变量来保存视图控制器,并在dealloc方法中使用release
它。此外,您可以将项目转换为ARC,从而完全无需retain
和release
来电。