我为我的 AppDelegate 设置了一个变量,它存储在 UIWebView 中单击的当前 URL。该变量在 shouldStartLoadWithRequest 函数中设置,如下:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSString *val = [request.URL absoluteString];
currentURL = val;
return YES;
}
问题是稍后在应用程序中,访问 currentURL 会导致 EXC_BAD_ACCESS 错误,因为 NSString 已被销毁。但是,如果我在分配变量时添加“保留”,例如:
NSString *val = [[request.URL absoluteString] retain];
那么这意味着每次查看页面时,都会保留一个永远不会释放的新字符串,从而导致内存泄漏。我以后如何释放所有这些保留的字符串?
我正在存储此值,以便在加载页面出现问题时重新加载页面。
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
[ausWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:currentURL]]]
}
我敢打赌这很简单。