すべてのAVCamファイルのdeallocメソッドに最初にログインしました。私は、AVCamViewControllerがあったときにAVCamCaptureManagerとAVCamRecorderが割り当て解除されていないことをすぐに発見しました。私はretainとreleaseの呼び出しをチェックして、バランスが取れているように見えたので、[captureManager release]にブレークポイントを設定し、リリースの後にretainCountが2であることを発見しました。(したがって、AVCamCaptureManager deallocは呼び出されませんでした。
次に、キャプチャマネージャの作成プロセスを進め、initメソッドが呼び出された直後に保持カウントが3であることを発見しました。
のinitメソッドを介してステッピングと、私は次の2行は、両方の保持カウントをインクリメントし、発見し、すべての行に保持カウントチェック:
てみる
[self setDeviceConnectedObserver=[notificationCenter addObserverForName:AVCaptureDeviceWasConnectedNotification object:nil queue:nil usingBlock:deviceConnectedBlock]];
[self setDeviceDisconnectedObserver=[notificationCenter addObserverForName:AVCaptureDeviceWasDisconnectedNotification object:nil queue:nil usingBlock:deviceDisconnectedBlock]];
私はremoveObserverの対応は、deallocメソッドINSIDEだったことが判明し
-(void)removeObservers {
NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
[notificationCenter removeObserver:[self deviceConnectedObserver]];
[notificationCenter removeObserver:[self deviceConnectedObserver]];
}
:保持カウントはそれを修正するには0
に低下したことがない(と呼ばれていませんでした)AVCamCaptureManagerのと私は新しい公共removeObserversメソッドを作成しました
と同じ行をAVCamCaptureManager deallocメソッドのOUTから取り出します。
[captureManager removeObservers]を呼び出します。 [captureManager release]を呼び出しています。 AVCamViewControllerのdeallocメソッドは、保持カウントを0に正常に落とします。
Activity Monitorでのテストでmediaserverdプロセスが5-17Mbでハミングし、クラッシュが停止しました!
これは、この問題を抱えている人に役立ちます。
ありがとう!その答えを答えに分割して、それを受け入れることができます:[自分の質問に答えるエチケット](http://meta.stackexchange.com/questions/17845/etiquette-for-answering-your-own-question)と[あなたが既に答えを見つけた投稿と回答の質問](http://meta.stackexchange.com/questions/2706/posting-and-answering-questions-you-have-already-found-the-answer-to) – sehe
私はプレミアムユーザーではないので、24時間以内に私自身の質問に答えることはできませんでした...それを取り乱す時間がありませんでした(または私が記録したいものを忘れる)...私は今それをやることができるかどうかを見ます。 –