1

ユーザーがキーボードから文字を入力する必要があるときに送信される非表示のUITextFieldがあります。

[txtField becomeFirstResponder]

このテキストフィールドには、編集に関するイベントが変更されており、必要な方法で入力された内容を処理する関数が呼び出されます。

次に、ユーザーは次の呼び出しを行う[OK]ボタンを選択します。

txtBox.text = @"";

[txtBox resignFirstResponder ];

私はラインまでずっといくつかのメモリの問題を追跡しました[txtField becomeFirstResponder]。これが呼び出されると、アプリのメモリ使用量がその場で2倍になり、(コードが実行されていても)メモリ警告が表示されます。それを削除すると(もちろんキーボードはありません!)、メモリの問題はなくなります。デリゲートレベルでキーボードを取り外すなど、いくつかのアプローチを読んで試しましたが、成功しませんでした。私はほとんど自分のキーボードを作成する段階にあります。

たくさんありますが、キーボードを閉じると適切にリリースされるのであれば、おそらくこの増加で作業できますが、そうではありません。アプリのフットプリントはどんどん重くなり、私の一生の間、その理由を理解することはできません。

最初の質問は、上記が私に問題を引き起こしている可能性はありますか?ありそうもないと思います。

そうでない場合、どこを見るべきか/なぜ私がそのような急速な増加を受け取るのかという提案はありますか?

これがInstrumentsのスクリーンショットです-赤い線は私がbecomeFirstResponderと呼ぶ場所を示しています:http://i.stack.imgur.com/E7PaU.png 彼らは私にそれをアップロードさせません-ごめんなさい!)

4

1 に答える 1

0

これは、メモリリーク/問題を追跡するための良い方法ではありません。メモリリークがある場合、機器はリークを示し、修正することができます。キーボードを閉じたからといってOSがメモリを解放するとは限りません(どちらかといえば、遅延読み込みとキャッシュが行われている可能性があります)。
問題はありませんでしたが、キーボードを見せたときにメモリーフットプリントが増える可能性があります。実際にどれだけのメモリが使用されているかは言わなかったので、小さなアプリだと思います。キーボードを開くときにそれを2倍にしても問題ありません。
OSはフリーズした開いているアプリをすべてキャッシュするため、メモリは常にタイトです。メモリ警告を受け取ったら、できることをクリアし、残りをOSに処理させます。必要に応じて、バックグラウンドアプリを強制終了します。アプリに問題があるという意味ではありません。

于 2012-06-17T14:04:39.873 に答える