質問

私がメインビューを持っていると想像してください。このような「addsubview」メソッドに電話があります。

[mainView addsubview:secondView];

...この2番目のビューでは、searchbarがあり、uikeyboardを表示し、テキストを入力し、アプリでこれを使用し、最後にuikeyboardを却下する適切なコードがあります。 Ok。

プログラムのこの部分が完了したら、「AddSubView」メソッドを次のように呼びます。

[secondView removeFromSuperview];
[mainView addsubview:thirdView];

これが完了すると、2番目のビューが消え、3番目のビューに置き換えられます。しかし... 2番目のビューで使用されるメモリは扱われていません。さらに重要なことは、Uikeyboard(約800 KO)で使用されるメモリは、アプリを終了するまで扱われず、2番目のビューを3番目のビューで置き換えてもアクティブのままです。

それで、UikeyBoardが使用しているメモリを適切に扱う方法はありますか?

(精度:上記のコードでは、3つのUIViewがすべてManview、SecondView、およびThirdViewという名前の3つのクラスファイルでサブクラス化されています。 。しかし、どうやら、それは呼び出されたことはありません...)

役に立ちましたか?

解決

Kiranthoratが指摘しているように、AddSubviewはビューを保持しているため、自分で適切にリリースしてください。 ViewがDeallocメソッドなどのサブビューをリリースしていることを確認してください。

また、シミュレーターの漏れをチェックするとき、私はいくつかのuikeyboardの漏れを見るのが正常であることがわかりました。これらはデバイスには存在しません(少なくとも私の場合は)。

他のヒント

SecondViewを作成する方法..サブビューを追加すると、保持され、削除すると自分で解放されます。

SecondViewを作成するときは、AutorEleaseを使用してみてください。または、監督から削除した後にSecondViewをリリースします....リリースする前にビューがゼロかどうかを確認します。そのため、リリースされた場合、アプリケーションがクラッシュしません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top