0

写真を撮ってデバイスに保存するアプリに取り組んでいます。[保存] をクリックすると時間がかかりすぎるようで、ログに次のメッセージがスローされます。

wait_fences: failed to receive reply: 10004003

撮影した写真を保存するときに呼び出されるメソッドは次のとおりです。

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

    [picker dismissModalViewControllerAnimated:YES];

    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];

    int img_count = [[appDelegate retrieveFromUserDefaults:@"image_saved"] intValue];
    img_count = img_count + 1;

    NSString *imageName = [[NSString alloc] initWithFormat:@"dmg_image_%@_%d", [appDelegate retrieveFromUserDefaults:@"current_job_id"], img_count];

    [appDelegate saveImage:image withName:imageName];
    [appDelegate saveToUserDefaults:imageName key:@"inspection_image"];

    [damageImage setImage:image];
    [damageDesc becomeFirstResponder];
}

何か単純なものが欠けていると確信しており、このメッセージを投げているものが何であれ、実行が少し遅い原因であると考えています。

この問題を抱えている他の人を読んだことがありますが、彼らは写真を撮ったことからの復帰ではなく、アラートコールを使用しています. didFinishPicking を呼び出すときにも少し遅延を使用する必要がありますか?

ありがとう!

4

1 に答える 1

2

問題は、おそらく、このメソッドをメイン スレッドで実行していることです。このwait_fences関数は、iOS グラフィック ライブラリの 1 つの内部関数であり、アニメーションに関連しています。画像を保存すると、大量のデータがファイルに書き込まれている間、メイン スレッドと UI がブロックされます。保存機能を別のスレッドに移動すると ( の使用を検討してNSThreadください)、ユーザー インターフェイスが再び応答するようになります。

于 2012-06-20T03:34:31.853 に答える