0

我对 NSString 有一个错误。在我的一个 .m 文件中,我有一个名为“conversions”的成员,类型为 NSString,并且在该类的方法中,该字符串被操作并添加到等等。好吧,当我尝试以不同的方法记录该字符串时后来被调用,由于某种原因,字符串作为 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 回答