在Xcode 4.3与LLDB奇怪的错误消息

我目前正在用Xcode 4.3.2编写一个iOS应用程序。 在我的代码的大部分地方,使用LLDB进行debugging工作得很好。 然而在某些时候,我正在逐步浏览我的代码时收到一条奇怪的消息。 它说,当我hover在一个有价证券

错误[IRForTarget]:无法findObjective-C间接ivar符号OBJC_IVAR _ $ _ MyFancyClass.iVar

而不是显示我的价值。 但是,在Variables View ,我可以看到它很好。 直到我selectPrint Description of ...也就是说,因为这样,Xcode崩溃…当我使用GDB时,hover工作,但variables的types和值是错误的。

我发现我的代码出了问题,导致debugging器失败。 但是,代码运行良好。 我很想提供一些样例代码,但是这个类很长,我不能确定我拧紧的确切位置。 那么有没有人遇到类似的行为?

更新:实际上,这似乎发生在我的代码无处不在,只是在一些特定的文件。 如果有帮助,当LLDB显示上述消息时,GDB总是显示拥有该iVar的Class对象,而不是iVar本身。 看起来内存pipe理有问题。 例如,如果我说的话

 [notificationCenter addObserver:self selector:@selector(foo) name:bar object:objA]; 

即使我有,select器也会被调用

 [notificationCenter postNotificationName:bar object:objB]; 

造成此错误的原因是构build设置不正确,如问题post中的讨论所述。 这可以通过将“部署后处理”设置为debugging模式的NO(缺省值)来解决。

确保MyFancyClass.m被添加到您的目标

您的select器,即nsnotification正在发送到需要有一个(而且只有一个)参数,这是一个NSNotification。 所以当你这样做的时候:

 [notificationCenter addObserver:self selector:@selector(foo) name:bar object:objA]; -(void)foo { } 

…你需要这样做:[notificationCenter addObserver:self selector:@selector(foo 🙂 name:bar object:objA];

 -(void)foo:(NSNotification *)notification { } 

请注意notificationCenter的select器中的冒号,以及foo的参数。