そのため、メモリ管理の問題を探すために時間を費やすことについて多くの検討と少しのフラストレーションを感じた後、私はいくつかの調査を行い、最終的にARCへの変更に屈しました。そして、それは比較的痛みがありませんでした。しかし、UIViewControllersに関連する新しい問題が表面化しました。プレアークはすべて宣伝どおりに機能し、スタックにプッシュして表示され、deallocメソッドが呼び出されてスタックからポップされ、全員が満足していました。ARCに切り替えると、deallocは呼び出されません。残念です。だから私は問題についていくつかの調査をしました、私がしていることとしていないことをリストアップさせてください
第一に、私がスタックにプッシュしているビューは、明示的に強力であると宣言されていません。
。親クラスの子クラスが持つデリゲートはunsafe_unretainedですが、ベースをカバーするために、デリゲートを親に設定することもコメントアウトしました。喜びはありません。
.NSzombiesをオフにすると、ARC対応のコードに問題が発生する可能性があります。
.iは、iOSビュー階層でリリースされていないメモリ内のbrad larsonsの回答によると、コードを変更しました。
if (_friendsListVC == nil)
{
_friendsListVC = [[FriendsListViewController alloc] initWithNibName:nil bundle:nil];
_friendsListVC.delegate = self;
}
[self.navigationController pushViewController:_friendsListVC animated:YES];
(_friendsListVCはメンバー変数です)。これに
FriendsListViewController *fVC = [[FriendsListViewController alloc] initWithNibName:nil bundle:nil];
//fVC.delegate = self;
[self.navigationController pushViewController:fVC animated:YES];
再び喜びはありません。deallocブレークポイントがヒットすることはありません。アプリで多くのビューをプッシュしてポップするので、うまくいけば修正するためにARCに切り替えた問題に加えて、メモリの問題が増えるだけです。 ..
また、このビューには他のいくつかのコードブロックと同様にいくつかのコードブロックがありますが、私も読んだ自己を使用していません。自己保持されているため、コードブロックに関してはrefを弱くする必要があります。
私は困惑していますが、ARCが何をしているのか誰かが私を解明できますか?または、ARCの使用を尊重して何をしていないのですか?将来の参照のために、ARCのビュー階層にプッシュするすべてのビューはインスタンス変数ではありませんか?
前もって感謝します。