1

通常の使用では問題なく動作するように見えるアプリがあります。Clang Static Analyzer も問題を報告しません。Instruments で実行しようとすると、認識されないセレクタ例外で失敗します。

問題のある行は、次の形式の単純なプロパティ セッターです。

self.bar = baz;

何が起こっているのかを把握するために、そのすぐ上に NSLog() 呼び出しを追加しました。

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

エミュレーター (Instruments なし) とデバイスでは、これはまさに私が期待するものを示しています。

クラス = Foo 応答 = 1

Instrumentsで実行すると、次のようになります。

クラス = Foo 応答 = 0

何がこれを引き起こす可能性があるのか​​ 、私は困惑しています。おそらく、Instruments 環境にあるときに、別のメモリ ロケーションが踏みにじられているのでしょうか? これをデバッグする方法を誰かが提案できますか?

4

3 に答える 3

0

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

于 2009-09-26T16:07:06.057 に答える
0

ここには何が起こっているのかを知るのに十分な情報がありませんが、提供する情報を知っていれば、おそらくすでに修正されているでしょう. そう。いくつかの確認事項:

  • 「自己」ポインターは何らかの方法でスウィズルされていますか? self健全性のために、さまざまな時点での値を出力してみてください
  • コードを Instruments で実行する場合、別のモードで実行されていますか? (32 ビット対 64 ビット、ガベージ コレクション対 Retain-Release など) これらのいずれかが効果を発揮する理由はわかりませんが、別のモードで実行されている場合は、調査する必要があります。
  • セッターを正しく合成していますか?それとも動的に提供されていますか (Core Data などを介して)? メソッドを手動で指定setBar:した場合でも、エラーが発生しますか?
于 2009-09-26T16:32:28.860 に答える
0

bar が自分のものなら、できませんbar=baz;か?

于 2009-08-13T17:32:45.400 に答える