のインスタンスの割り当てが解除されたことを確認するにはどうすればよいMPMoviePlayerController
ですか?すでにNSZombieEnabledをYESに設定してチェックしていることに注意してください。
問題のコードは、私のアプリの特定の状況下でうまく機能します。もう1つは、moviePlayerコントロールを含むビューが展開されると、MPMoviePlayerDidEnterFullscreenNotification
コールバックメソッドが実行され、画面が真っ暗になり、ユーザーの視点から見たアプリがフリーズした直後です。(違いは、これにはナビゲーションスタックに追加のviewControllerがあることです)。アプリはクラッシュしません。まだ実行中ですが、使用可能なUIに戻ることはできません。
デバッガーでは、インスタンスが「生きている」最後の既知の時刻をチェックしてアドレスを取得し、割り当てが解除されていることを確認します。
2012-10-01 18:35:46.032 MyApp[930:907] -[MyMoviePlayerViewController moviePlayerDidEnterFullscreenNotification:](203): : moviePlayer = <MPMoviePlayerController: 0x1dba9420> loadState = 3
2012-10-01 18:36:05.280 MyApp[930:907] [MPAVController] Autoplay: Enabling autoplay
ここで黒い画面が発生するので、デバッガーを確認します。
(lldb) po 0x1dba9420
2012-10-01 18:37:38.656 MyApp[930:907] *** -[MPMoviePlayerController respondsToSelector:]: message sent to deallocated instance 0x1dba9420
(int) $0 = 498766880 [no Objective-C description available]
他のクラスの他の既知のインスタンスをチェックすると、それらは生きていて、期待どおりです。
(lldb) po 0x1da12110
(int) $1 = 497099024 <MyDetailViewControllerWithTableView: 0x1da12110>
(lldb) po 0x1da1af70
(int) $2 = 497135472 <MyMasterTableViewController: 0x1da1af70>
(lldb) po 0x1da19be0
(int) $3 = 497130464 <NSFetchedResultsController: 0x1da19be0>
繰り返しになりますが、インスタンスがいつ、どのように割り当て解除または破棄されるかをどのように確認しますか?使用できる楽器タイプはありますか?割り当ては、インスタンスが割り当てられ、現在は生きていないことを示しています。
ステップバイステップのトレースを実行できると思いますが、それは面倒です...イベントが発生したときに条件を設定し、Instruments(またはデバッガー)を停止させることができれば素晴らしいと思います。