必要があるときにオブジェクトを削除ARCをデバッグする方法(ARCでコンパイルされました) 。デバッグビルドでは、すべてが問題ありません。それは明確にすべきではないときにオブジェクト(IVAR、NSMutableDictionary)がリリースビルドで削除されている場所、それは私が私のiOSゲーム内のケースを持っていない
私はこれをデバッグする最良の方法を見つけようとしています。私がオブジェクトに対して何らかのチェックをしたら、それは必要なときにハングアップします。私は、オブジェクトがアクセスされているので、アプリケーションがクラッシュするため、オブジェクトが使用されていることを知っています。
私は、オブジェクトが削除されていることを伝えるためにゾンビオブジェクトを使用しますが、いつどこでそれが起こっている私は知りません。
ですが、コンパイラは、これはもはや必要ありませんオブジェクトまたは実際に削除されているとき(それが自動解放プールにいた場合、私には何も教えてくれないかもしれない)と思ったときに私が見るための方法。
これを追跡するのによいアドバイスはありますか?私はこれをコンパイラのバグと呼ぶのは嫌ですが、コンパイラがどのようにこのオブジェクトが参照されていないと思うか分かりません。 ivarを保持するオブジェクトは、すべてのコードが実行されている場所なので、明らかにまだ周囲にあります(そうでない場合は、さらに悪いことが起きます)。
は、今の私はちょうどそれにコードのデバッグの1行が削除されないようにオブジェクトを引き起こすことを去るつもりですが、私はそのソリューションとアプリケーションを出荷すること嫌い。ありがとうございました。
この問題に関する追加情報はありますか?私はちょうどそれが保持する必要があるオブジェクトを削除するARCを扱う-O0以外の最適化でコンパイルするとクラッシュしました... – fbrereto
xcodeが更新されたときにバグが私のためにやってきました。それは9ヶ月前であり、以来、問題を抱えていました。 –
よろしくお願いいたします。 CGPointを単なるObjective-Cクラスのメンバーではなくプロパティにしてしまったとき、それは去ってしまったという奇妙な問題でした。奇妙だが、少なくとも問題は解決されている。 – fbrereto