0

こんにちは私はこれについても多くの質問をしましたが、iOS 5.1.1では役に立ちませんでした。最初の2回は正常に動作し、n3回目はアプリがメモリ警告を表示してクラッシュします。これが私のコードです。

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
[picker dismissModalViewControllerAnimated:YES];

UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
    if (image) {

    if ([appdel.arrImageData count]==0) {
        count=0;

    }
    count++;
    [appdel.arrImageData addObject:[image copy]];
}}

どんな助けでもいただければ幸いです。

4

5 に答える 5

3

写真を撮るたびに、そのコピーをarrImageDataに保持するため、メモリを使いすぎてiOSがアプリを強制終了するまでメモリがいっぱいになります。デザインを再考して、記憶に 1 つの画像だけを残すようにします。なんらかの理由ですべての写真が必要な場合は、ドキュメントまたはキャッシュ ディレクトリに保存し、別の写真を撮る前にメモリを消去してください。

于 2012-05-26T10:02:48.610 に答える
2

私はあなたのコードを修正しました。それが役立つかどうかを確認してください

  - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {


    UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
        if (image) {

        if ([appdel.arrImageData count]==0) {
            count=0;

        }
        count++;
        [appdel.arrImageData addObject:[image copy]];
    }

[picker dismissModalViewControllerAnimated:YES];
[picker release];
}
于 2012-05-26T10:06:42.087 に答える
2

ImagePickerController のメモリ管理が表示されません。しかし、dismissModal を呼び出した直後に、ピッカーの割り当てを解除する際に問題が発生しました...

画像を取得したら、モーダル ビューとピッカーを閉じてみてください。

更新: 私はあなたに同意します。iOS 3 から 5 までの複数のデバイスの多くの iOS バージョンで pickerController を機能させようとすることに関連して、あまりにも多くの問題がありました。その結果、iOS 3 のサポートをスキップし、AVベースの写真や動画を操作する独自のコードの実装を開始しました。 Foundation プログラミング ガイドAV Foundation フレームワーク リファレンス

于 2012-05-26T10:07:15.747 に答える
1

ここであなたが欲しいものを手に入れることができます。

そのコードでは、単純に autorelease プールを配置してメモリを解放しました。

これがあなたに役立つことを願っています。

于 2012-05-26T12:32:51.220 に答える
1

を使用しているアプリは、メモリ警告を頻繁に受け取りますUIImagePickerController。画像を取得し、画像を何度も取得すると、メモリが毎回増加し続けます(メモリを正しく管理していない場合。私の場合、1.5MBごとに増加していました)。そのため、1 回目、2 回目、または 3 回目は機能し、次回はメモリ警告を受け取るか、バックグラウンドで実行されているアプリが多すぎる場合は、最初にメモリ警告を受け取る可能性があります。

ここで重要なのは、このメモリ警告をどのように処理するかです。アプリがメモリ警告を受け取ると、viewDidUnloadすべてのアクティブなView Controllerが呼び出され、再作成できる不要なオブジェクトをすべて解放する必要があります。そこで何か間違ったことをしているために、アプリがクラッシュしている可能性があります..つまり、.hファイルと.mファイルの両方を確認する必要があります..

于 2012-05-26T10:30:33.720 に答える