0

我正在尝试从 UIViewController 的 viewDidDisappear 中的 UIWebView 本地文件重新加载内容。错误访问被捕获。但如果我在 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];
}
4

2 回答 2

1

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

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

希望能帮助到你

于 2012-04-13T10:05:40.180 回答
0

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

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

于 2012-04-13T10:01:44.160 回答