UIViewController サブクラスをナビゲーション スタックにプッシュしています。ただし、navigationController によって保持されているため、ポインタをスタックにプッシュした後、ポインタを「解放」して、最終的にポップされたときに viewController が解放されるようにします。
ただし、機能していません。viewController の dealloc メソッドが呼び出されることはありません。コードは次のようになります。
MyViewController *newViewController =
[self.storyboard instantiateViewControllerWithIdentifier:@"foo"];
[self.navigationController pushViewController:newViewController animated:YES];
newViewController = nil;
次のコードでも、私の newViewController は解放されていません。
MyViewController *newViewController =
[self.storyboard instantiateViewControllerWithIdentifier:@"foo"];
newViewController = nil;
私が理解していることから、新しい自動参照カウント (ARC) システムの下では、オブジェクトが何も指されないと、オブジェクトの割り当てが解除されます。作成中のviewControllerのdeallocメソッドにNSLogメソッドを入れたのですが一向に呼び出されません。
ここで何が欠けていますか?!
スタック オーバーフローに関する私の最初の投稿を読んでくれてありがとう :)
**編集: * *
謝罪します。自動解放プールにラップされた 2 番目のコードを試したところ、割り当てが解除されました。次に、自動解放プールなしで試してみたところ、適切に割り当て解除されました。昨夜何が起こったのかわかりません。
(2回目の編集:そして今、再び機能しなくなりました.ffffffuuuuuuuuuuuuuu)