2009-04-22 5 views
1

didReceiveMemoryWarningがいつ、どのように呼び出されるかについて、私は素早く問い合わせています。私はこのメソッドを正しく使う方法を完全に理解しています。私がドキュメンテーションで見つけることができない私の質問は、このメソッドが呼び出されるために自分のメモリフットプリントを管理していることが自分の責任であるかどうかです。私はいつもdidReceiveMemoryWarningがiPhone OSによって呼び出されているのですか?

iPhone OSがメモリを必要とするため、私はすべてのことを完璧にやっている可能性があるので、私はサードパーティのアプリだからこの通知を私に送りますか?私は、漏れ、ObjectAlloc、そして私が利用可能なツールを実行して、奇妙な動作を見てきました。私のメモリの占有面積は最大2.2MBです。私はコードワイズが特に恐ろしいことは何も見ていない。

ここで私はいくつかの他のアプリを開いて、そこに私のiPhoneを使用して、私が開発しているアプリを開いているところまで来ています。このビューは、最終的にリモートXMLフィードから構築されたdataSourceを表示するUITableViewControllerです。だから私は何かひどく間違ったことをしている可能性があります。しかし、私は自分のコードを非難する前に、このメソッドをよりよく理解する必要があります。

メモリを管理する方法が完全に健全なアプリでこのメソッドを呼び出すことは可能ですか?

答えて

1

メモリの警告はいつでも発生する可能性があります。 MailやSafariのようなバックグラウンドで実行されるアプリがあります。

1

多くの点で、誰が責任を負うかは関係ありません。 Appleのコードはリークします。特にイメージピッカーとHTTPクラス(後者はひどくリークしません)。警告の原因は何でも、あなたはそれを回復するコードを書くことができる唯一の人物です。

アプリのメモリフットプリントについては何も知られていません(私が知っている)ので、いつでもこのメッセージをアプリに送信することは可能でしょう。それは確かにシミュレータと電話で異なる時間に送信されます。これは、メモリ警告を受け取らないことを保証できる "安全なフットプリント"がないことを意味します。明らかにあなたのメモリフットプリントを低く保つことは、あまり起こりそうもありません。

おそらく、多くのリークがあるかどうかを確認するためにサンプルコードを投稿してください。あなたが説明しているアプリは、通常の使用でメモリ警告を引き起こしてはならないほど簡単です。

関連する問題