0

NSStringでエラーが発生しました。.mファイルの1つに、NSString型の「conversions」というメンバーがあり、そのクラスのメソッド内で文字列が操作され、追加されます。別のメソッドでその文字列をログに記録しようとすると、後で呼び出されます。何らかの理由で、文字列はUITouchオブジェクトとして出力されます。具体的には、次のように文字列をログに記録しようとします

NSLog(@"%@", conversions);

そして私のコンソールではそれは印刷します

<UITouch 0x131700> phase: Ended tap count: 1 window: <UIWindow: 0x136470; frame = (0 0: 320 480) opaque = NO.....(and more property type stuff)

NSStringがUITouchオブジェクトのように見えるのはなぜですか?何が起こっている?

4

1 に答える 1

2

このような問題の原因としては、「コンバージョン」のリリースが早すぎたために割り当てが解除され、そのメモリ位置への参照が保持されていたことが考えられます。次に、別のオブジェクトがこの場所に割り当てられました。

これをデバッグするには、NSZombieEnabledを設定します。オブジェクトの割り当てを解除しませんが、オブジェクトを「ゾンビ」に置き換えます。たとえば、次のリンクを参照してください。

http://www.tomwhitson.co.uk/blog/2009/04/debugging-with-nszombiesenabled/

于 2010-08-09T14:59:18.987 に答える