4

ナビゲーションスタックの前のビューコントローラーに戻るとクラッシュする理由がわかりません。私はカスタムナビゲーションバーを使用しています(元のボタンは非表示になっていて、カスタムボタンは代わりにナビゲーション(プッシュアンドポップ)を起動します)。

私が得るトレース:

Program received signal:  “EXC_BAD_ACCESS”.

#0  0x011a4a60 in objc_msgSend
#1  0x0044e37c in -[UIImageView(UIImageViewInternal) _canDrawContent]
#2  0x003bf3df in -[UIView(Internal) _didMoveFromWindow:toWindow:]
#3  0x003bf1b0 in -[UIView(Internal) _didMoveFromWindow:toWindow:]
#4  0x003bf1b0 in -[UIView(Internal) _didMoveFromWindow:toWindow:]
#5  0x003bdfc4 in -[UIView(Hierarchy) _postMovedFromSuperview:]
#6  0x003b6dfc in -[UIView(Internal) _addSubview:positioned:relativeTo:]
#7  0x003b514f in -[UIView(Hierarchy) addSubview:]
#8  0x005ca471 in -[UINavigationTransitionView transition:fromView:toView:]
#9  0x005c9ed5 in -[UINavigationTransitionView transition:toView:]
#10 0x0043c606 in -[UINavigationController _startDeferredTransitionIfNeeded]
#11 0x0043c292 in -[UINavigationController _popViewControllerWithTransition:allowPoppingLast:]
#12 0x0043bfa9 in -[UINavigationController popViewControllerWithTransition:]
#13 0x0043f62b in -[UINavigationController popToViewController:transition:]
#14 0x000124fa in -[BaseViewController bottomNavigationFiredController:] at BaseViewController.m:187
4

2 に答える 2

3

ビューコントローラがナビゲーションスタックにプッシュされたとき(新しいビューコントローラがプッシュインされたとき)、それ自体が解放されていなくても(ナビゲーションコントローラスタックに保持されていても)、そのmaimビューが解放されていることを覚えておく価値があります(すべてがもちろんサブビュー)あなた。

したがって、このタイプのクラッシュは、ほとんどの場合、メモリ管理のUI部分を指します(私の場合は、自動リリースされたUIImageの二重リリースである可能性があります;-)。

UINavigationControllerがメモリを管理する方法を誰かが理解するのに役立つことを願っています。

于 2010-12-17T09:22:24.433 に答える
2

最後のビューが保持されなくなったことが原因である可能性がある同じ問題に直面していました。プロパティを作成して合成することにより、前のビューを保持しようとするのが最善の方法です。

次に、使用してみてください

[self.navigationConroller popViewControllerAnimated:YES];

または目的のビューにポップします

[self.navigationController popToViewController:myview animated:YES];

またはrootviewにポップします

[self.navigationController popToRootViewControllerAnimated:YES];

すでにリリースされているビューに移動しようとすると、このエラーが発生するため、問題が解決するかどうかをお知らせください。

于 2010-12-08T06:07:26.237 に答える