スタック内の以前のビューコントローラを削除する必要があります。リリース構成でUINavigationControllerがクラッシュするのはなぜですか?
NSMutableArray *vcs = [NSMutableArray arrayWithArray:self.navigationController.viewControllers];
BOOL removedFlag = YES;
while (removedFlag == YES)
{
removedFlag = NO;
for (UIViewController *vc in vcs)
{
if(![vc isKindOfClass:[self class]] && ![vc isKindOfClass:[MenuVC class]])
{
[vcs removeObject:vc];
removedFlag = YES;
break;
}
}
}
[self.navigationController setViewControllers:[NSArray arrayWithArray:vcs]];
は今、私はアプリを更新していますし、それが神秘的にリリース構成ではなく、デバッグ時にクラッシュ:私は正常に何の問題もなく、過去にこの方法を使用しています。さらに、デバッグモードでは何の警告もありません。私はSDKで何か変わったと思う。これは決して前にこれをしなかった。 http://dl.dropbox.com/u/7834263/RemoveTest.zip
これはARC対応のプロジェクトです:
私は、利用可能なサンプルプロジェクトを作りました。
これは動作しますが、なぜですか?どちらの配列もオブジェクトへの参照を保持していませんか? – TigerCoding
解説を解説付きで更新しました。 –
=奇妙な私は以前これに問題がなかった。上記のコードで、削除後にvcs配列の内容をチェックすると、2つのView Controllerしか表示されないので、それらを削除しています。 – TigerCoding