2016-04-25 27 views
0

私はこの面白い問題があります。UIImageWriteToSavedPhotosAlbumはアプリをフリーズします

UIImageWriteToSavedPhotosAlbumと呼ぶと、アプリがフリーズしてしまい、理由がわかりません。

は、これは、私はそれが動作し、時にはそれがないように時々

UIImageWriteToSavedPhotosAlbum(leftImage, self, @selector(image:didFinishSavingWithError:contextInfo:), nil); 

UIImageWriteToSavedPhotosAlbum(rightImage, self, @selector(image:didFinishSavingWithError:contextInfo:), nil); 

- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo: (void *)contextInfo 
{ 
    if (error != nil) 
    { 
    NSLog(@"Image Can not be saved"); 
    } 
    else 
    { 
    NSLog(@"Successfully saved Image"); 
    } 
} 

を持っているコードです。私はこれらの2行を削除すると、決して凍結しません。何が悪くなる可能性があります。私はアプリがフリーズするので、didFinishSavingWithErrorが見えないと思っています。

は、ここでの問題は、あなたが2回連続してこのメ​​ソッドを呼び出しているということであるスタック enter image description here

+0

クラッシュするか、フリーズしますか?あなたは両方とも言います。 – rmaddy

+0

@rmaddy freezes – PictureMeAndYou

+0

フリーズを定義します。あなたは、メインスレッドのブロックまたは何か他のものを意味しますか? – rmaddy

答えて

0

です:

UIImageWriteToSavedPhotosAlbum(leftImage, self, @selector(image:didFinishSavingWithError:contextInfo:), nil); 
UIImageWriteToSavedPhotosAlbum(rightImage, self, @selector(image:didFinishSavingWithError:contextInfo:), nil); 

をしかし、そのメソッドが完了するまでに時間がかかります。完了するまで、もう一度呼び出すことはできません。これは、didFinishSavingWithErrorのためのものです。完了した時点を知っているので、再度呼び出すことは安全です。

したがって、didFinishSavingWithErrorが初めて呼び出されるまで、UIImageWriteToSavedPhotosAlbumにもう一度お電話をしないでください。

関連する問題