UIWebView的。在viewDidDisappear中重新加载时的Badaccess

时间:2012-04-13 09:45:46

标签: ios uiviewcontroller uiwebview

我正在尝试从UIViewController的viewDidDisappear中重新加载UIWebView的本地文件中的内容。 Badaccess被抓住了。但是如果我在viewWillDisappear中编写相同的代码,它就可以了。 可能是什么原因? 一旦我听说UIWebView在看不到它时就无法重新加载它的内容(不确定)。

我的代码(希望它足够了):

@interface WebViewController : UIViewController <UIWebViewDelegate> {
    ExtendedWebView * webView;
}
@property (nonatomic, retain) ExtendedWebView * webView;
@end

//WebViewController implementation
- (void)loadView
{
    [super loadView];
    WebViewCachingSingleton * webViewSingleton = [WebViewCachingSingleton sharedService];
        ExtendedWebView * newWebView = [webViewSingleton getAvailableWebViewResource];//here I get ExtendedWebView. it works =)
    newWebView.frame = CGRectMake(0, 0, 320, 400);
    newWebView.delegate = self;
    [self.view addSubview:newWebView];
    self.webView = newWebView;
}

- (void)viewDidDisappear:(BOOL)animated
{
    [[WebViewCachingSingleton sharedService] makeWebViewUnused:self.webView];
}

//WebViewCachingSingleton:
- (void) makeWebViewUnused : (ExtendedWebView *) aWebView
{
    aWebView.isFree = YES;
    [aWebView reload];
}

2 个答案:

答案 0 :(得分:1)

它不起作用,因为当视图消失时调用viewDidDisappear,因此释放所有子视图。在释放与该视图关联的所有对象之前调用viewWillDisappear。

所以你试图调用已经发布的UIWebView的重载方法。这基本上就是崩溃的原因。

希望有所帮助

答案 1 :(得分:0)

即使没有显示,也可以执行重新加载。

我试图将一个代码示例放入您的状态并且没有任何问题。 尝试调试并启用NSZombieEnabled以查看应用程序实际发生的情况。 尝试发布任何可能有助于我们为您提供更多详细信息的代码。