シミュレーターで動作するかなり大きなアプリがありますが、iPhone デバイスで過剰にリリースされたオブジェクト シナリオを作成します。NSzombies は、オブジェクトがシミュレーターで過度にリリースされておらず、NSZombies がデバイスで機能しないことを除いて、進むべき道のように見えます。何時間ものロギングを通じて、私が実行したときの間のどこかにそれを突き止めることができるようです -
[locManager startUpdatingLocation] と - の開始
(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
それがシミュレーターで機能する理由を説明しています。私はロケーション能力を検出せず、そのロケーションコードを実行しません。
[locManager startUpdatingLocation] の直前と直後にインラインで NSLog を実行すると、NSString オブジェクトが割り当てられて存在します。しかし、アプリが実行されて locationManager にヒットすると、NSLog は NSString の割り当てが解除され、なくなったことを示します。この文字列オブジェクトは、場所の処理や機能とはまったく関係ありません。無関係の NSString。他のすべての潜在的な活動をコメントアウトし、すべての明示的なリリースコードをコメントアウトしましたが、それが発生した瞬間を見つけることができません.
lldb がウォッチポイントをサポートしていないようで、gdb がそれらをサポートしているように見えることにさらに不満を感じていますが、このバージョンでは機能しないようです。gdb はハードウェア ウォッチポイントを設定し、Xcode は実行中と表示しますが、30 分後も視覚的なアクティビティや中断はありません。
私はライオン、Xcode 4.1.1、そしてコーヒーを飲みすぎています。
このリリースされた NSString オブジェクトを、このような狭い範囲のアクティビティと限られたツールで見つけるには、どのようなアプローチをとればよいでしょうか?