15

HD写真を操作するアプリに取り組んでいます。AVCaptureSession で写真を撮って停止し、その写真に効果を適用しています。

私を夢中にさせるのは、すべてが正常に機能することです。楽器は、私が使用しているすべてのメモリを適切かつ時間通りに解放することを教えてくれます。はい、時には100MBまで非常に高くなります。しかし、それはすぐに落ちます。

その後、キャプチャ セッションを再起動すると、メモリ警告が表示されました。その理由はまったくありません;_; 解放された場合に使用したすべてのメモリ...次にキャプチャ セッションを再開すると、アプリがクラッシュします。メッセージもログも何もありません。

これを解決する方法がわからない、どこを探せばいいのかわからない... 誰かが私を少し助けてくれたら、とてもうれしいです!

前もって感謝します!

4

2 に答える 2

23

私も同じ欲求不満を持っていました。AVFoundationを使用してカメラを提示するプロジェクトでARCを使用していました。ビューコントローラを数回表示してポップした後、アプリにメモリ不足の警告が表示され、その後クラッシュしました。楽器もあまり役に立ちませんでした。私は実験によって解決策を発見しました:

カメラクラスでARCを使用している場合でも、deallocメソッドを実装できます(deallocを呼び出さないsuperでください)。

- (void)dealloc {
    AVCaptureInput* input = [session.inputs objectAtIndex:0];
    [session removeInput:input];
    AVCaptureVideoDataOutput* output = [session.outputs objectAtIndex:0];
    [session removeOutput:output];  
    [session stopRunning];
}

これにより、AVCaptureSessionが停止し、入力または出力がまだ有効になっていないことが保証されます。

于 2012-07-07T19:02:27.943 に答える