2013-12-11 6 views
8

エラーアプリケーションがU30magePickerControllerカメラを使用して一部の画像をキャプチャすると、メモリの圧力によって終了しましたiOS 7でカメラを使用しているときにメモリ圧力によってアプリケーションが終了しました

私は最初にメモリの警告を受け取り、突然アプリケーションがクラッシュします。この問題は、特にiOS 6と同じように、うまくいきます。

カメラを使用しているときに、このメモリの問題がiOS 7で発生している理由を知っていますか?

注:このメモリ圧迫の原因になる可能性があるため、RAMの使用を最小限に抑えようとしました。しかし、まだ警告を得る。

+2

インスツルメントの[割り当て]ツールを使用して、RAMを使い切っている場所と割り当てられた場所を正確に確認します。 – NSAdam

+0

私はiPhone 5でもiOS 7でテストしました。これはiPhone 5で正常に動作しています。この警告を受け取ったのはiPad miniのみです。 –

+0

これは静かipadのミニとの問題です – Saurabh

答えて

5

私はちょうど同様の投稿(iOS 7 UIImagePicker preview black screen)にこの回答を掲載しました。私が言ったことは次のとおりです。

約5ヶ月前、私のチームはUIImagePickerControllerでメモリリークを発見しました。各インスタンシエーションはアプリを指数関数的に減速させました(つまり、最初のalloc-initは1秒の遅延を、2秒は2秒の遅延を、3番目の遅延は5秒の遅延を持っていました)。最終的に、私たちは30〜60の遅延を経験していました(あなたが経験しているものに似ています)。

UIImagePickerControllerをサブクラス化してシングルトンにすることで、この問題を解決しました。そのようにして初めて一度しか初期化されませんでした。今私たちの遅延は最小限であり、我々は漏れを避ける。サブクラス化がオプションでない場合は、viewController内のクラスプロパティを試して、ちょうどそのように読み込みます。

-(UIImagePickerController *)imagePicker{ 
    if(!_imagePicker){ 
     _imagePicker = [[UIImagePickerController alloc]init]; 
     _imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; 
} 
    return _imagePicker; 
} 

次に、あなただけの後に同じようにそれを呼び出すことができます。私が言うことができるものから

[self presentViewController:self.imagePicker animated:YES completion:nil]; 

、これは、iOS 7のUIImagePickerControllerを持つだけの問題以前のバージョンでは大丈夫のようですです。

+1

魅力的なもの。 - あなたの解決策は、イメージピッカーが写真(カメラ)の撮影にのみ使用されることを示していることに注意してください。必ずしもそうである必要はありません。 – matt

+0

良い点。常にself.imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibraryと言って、いつでも変更することができます。アイデアはあなたのUIImagePickerControllerは一度しか初期化されていません。 – eckyzero

+0

私は徹底的にテストしますが、問題を解決したようです。 – Camus

関連する問題