UIWebView でクリックされた現在の URL を格納する AppDelegate の変数セットがあります。この変数は、次のように shouldStartLoadWithRequest 関数で設定されます。
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSString *val = [request.URL absoluteString];
currentURL = val;
return YES;
}
問題は、アプリケーションの後半で currentURL にアクセスすると、NSString が破棄されているため、EXC_BAD_ACCESS エラーが発生することです。ただし、変数が割り当てられているときに「保持」を追加すると、次のようになります。
NSString *val = [[request.URL absoluteString] retain];
これは、ページが表示されるたびに、解放されない新しい文字列が保持され、メモリ リークが発生することを意味します。これらの保持されたすべての文字列を後で解放するにはどうすればよいですか?
ページの読み込みで問題が発生したときにページがリロードされるように、この値を保存しています。
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
[ausWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:currentURL]]]
}
私はそれが単純なものだと確信しています。