2011-10-18 11 views
1

私のアプリでは、ときどき私はレベル1のメモリ警告を受け取ります。それが起こると、tabbarviewcontrollerの一部であるビューの1つのviewdidunloadを呼び出します。 viewdidunloadでは、私はアウトレットをnilに設定しました。これは全く正常だと思います。IOSのメモリ警告を管理する。すべてのポインタ?

そのクラスに再度アクセスしようとすると問題が発生します。割り当てが解除されたため、不正なアクセスエラーが発生し、そのビューが再び表示されなくなります。これらのアウトレットを無制限に設定しないと、正常ではないクラッシュは発生しませんが、コンベンションではいつでもアウトレットをviewdidunloadに設定します。

この場合、メモリ警告を処理するためのポインタはありますか?私はそれが規約に反しているので、私はviewdidunloadメソッドにあるコードを削除したくないです。

私は私がその場合tabbarcontroller> _ <

答えて

1

をサブクラス化し、再びXIBファイルに追加サブビューは、あなたが再びそのビューをロードする際に割り振られることを追加するのを忘れ。カスタマイズしたい場合は、viewDidLoadメソッドで行います。

+0

基本的にviewdidloadは再び呼び出されません。いったんthetbbarcontrollerがsetindexを呼び出すと、コントローラはコントローラではなく、クラッシュします。 – user281300

1

割り当て解除されたビューはどこに割り当てられますか。 viewDidUnloadに割り当てられていないビュー(たとえば、viewDidLoad)の割り当てを解除しているようです。代わりに別の場所に作成されている可能性がありますので、再作成せずにviewControllerのビューを再読み込みします。

+0

これはすべてiBで作成されているので、viewdidunloadに何もリリースしていません。私はviewdidunloadでnilに設定するだけです。私は、問題は、私がリリースされたviewcontrollerに対応していないカスタムタブバーを使用しているという事実のために起こると思います。私はviewcontrollerをリロードするためのチェックを追加します。 – user281300

+0

ああ、UITabBarControllerをサブクラス化しましたか? –

+0

私はtabbarcontrollerをサブクラス化しました – user281300