私のアプリでは、(モーダルの非表示またはナビゲーション スタック ポップによって) 割り当てが解除されたビューがあり、その後メモリ警告が表示されると、アプリがクラッシュします。
次のように、アプリの非常に早い段階でモーダルの作成/破棄を配置してテストしました。
WWebViewController *webViewController = [[WWebViewController alloc] initWithPath:@"http://www.google.com"];
[webViewController setIsModal:YES];
WMainNavController *navController = [[WMainNavController alloc] initWithRootViewController:webViewController];
[self presentViewController:navController animated:YES completion:nil];
Web ビューは非常に単純です。
- (void)viewDidLoad
{
[super viewDidLoad];
[self setNavigationDefaultsWithTitle:@"Loading..." withBackButton:YES withSearchButton:YES deepLinked:false];
webView = [[UIWebView alloc] initWithFrame:[self.view bounds]];
webView.delegate = self;
[self.view addSubview:webView];
[webView scalesPageToFit];
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:self.path]]];
[self showNoConnectionImageIfNecessary:NO];
// Do any additional setup after loading the view.
}
...
- (void)dealloc {
[webView loadHTMLString:@"" baseURL:nil];
[webView stopLoading];
[[NSURLCache sharedURLCache] removeAllCachedResponses];
[webView setDelegate:nil];
webView = nil;
}
ただし、このビューを表示してから閉じるだけで、メモリ警告をシミュレートすると、次のようになります。
*** -[WMainNavController retain]: message sent to deallocated instance 0xba953c0
WMainNavController を使用せずに WWebViewController を直接呼び出すことでこれを試し、通常のナビゲーション コントローラーを使用して、単純に何かをナビゲーション スタックにプッシュしようとしました。アプリのどこかでビューをポップまたは閉じた場合、常にクラッシュします。
私は根本的に間違ったことをしていますか?閉じたりポップしたりせずにアプリを進めると、メモリの警告が正常に処理され、この画面をモーダルとして表示し、プログラムのルート ビューである画面が 1 つだけ表示されます。
必要な追加情報を提供します。誰かこのようなものを見たことがありますか?
編集 -- これは ARC の実装です。
編集 - これは、ゾンビがオンになっている私の楽器のスクリーンショットです。
私にはすべてが正常に見えます。解雇時に適切に割り当て解除されますが、何らかの理由でメモリ警告呼び出しがそのビューコントローラーにアクセスしようとしています。私は完全に途方に暮れています。