2009-08-13 13 views
1

通常の使用で問題なく動作するように見えるアプリがあります。 Clangスタティックアナライザは問題もないことを報告します。インストゥルメントで実行しようとすると、認識できないセレクタ例外が発生して失敗します。計測器で実行中のiPhoneアプリが認識できないセレクタで失敗する

問題のある行は、フォームの単純なプロパティのセッターである:オン

NSLog(@"class = %@ responds = %d", [self class], [self respondsToSelector:@selector(setBar:)]); 
self.bar = baz; 

self.bar = baz; 

で何が起こっているかを把握するために、私はすぐにそれ以上のNSLog()の呼び出しを追加しましたエミュレータ(機器なし)とデバイス上では、これは私が期待しているものを正確に示しています:

クラス= Fooが応答= 1

インスツルメンツの下で実行している場合は、私が取得:

クラス= fooは私がこれを引き起こす可能性があるものにのように困惑= 0

を応答します。インストゥルメント環境にあるとき、おそらく別のメモリ位置が変化しているのでしょうか?誰も私がこれをデバッグする方法を提案することはできますか?

答えて

0

バーが自己に属している場合は、bar=baz;はできませんか?

+0

これはプロパティの観察者に通知するものではなく、バーがインスタンス変数として直接実装されていない可能性もあります。それは他の値から合成することができる。例えば、 "fullname"プロパティは "firstname"と "lastname" ivarsに格納され、それを直接バックアップするivarはありません。 –

0

プロパティを確認してください。 おそらくあなたはバズのキャストが必要でしょうか?

0

何が起こっているかを知るには十分な情報がありませんが、提供する情報が分かっていれば、おそらくそれを修正している可能性があります。そう。確認するべきいくつか:

  • 「自己」ポインタは何らかの方法でスウィズルされていますか? selfの値を何らかの点で印刷してみてください。
  • コードがInstrumentsで実行されているとき、別のモードで動作していますか? (32ビットvs 64ビット、ガベージ・コレクション対リテンション・リリースなど)なぜそのようなものが効果を持つのかはわかりませんが、別のモードで実行している場合は、調べるべきことです。
  • セッターを正しく合成していますか?または、それは動的に提供されていますか?(Core Dataなどを介して)手動でsetBar:メソッドを指定した場合でも、エラーは発生しますか?
関連する問題