繁体   English   中英

带有LLDB的Xcode 4.3中的奇怪错误消息

[英]Weird error message in Xcode 4.3 with LLDB

我目前正在使用Xcode 4.3.2编写iOS应用程序。 在我的代码的大多数部分中,使用LLDB进行调试工作正常。 但是在某些时候,我在逐步执行代码时收到了一条奇怪的消息。 当我将鼠标悬停在iVar上时,它说

错误[IRForTarget]:找不到Objective-C间接ivar符号OBJC_IVAR _ $ _ MyFancyClass.iVar

而不是向我展示价值。 但是,在Variables View ,我可以看到它很好。 直到我选择...的Print Description of ... ,因为那时,Xcode崩溃......当我使用GDB时,悬停工作,但变量的类型和值是错误的。

我认为我的代码有问题,这反过来导致调试器失败。 但是,代码运行正常。 我很乐意提供一些样本代码,但课程相当长,而且我无法确定我的搞砸的确切位置。 那么有没有人遇到类似的行为?

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

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

即使我有选择器也会被调用

[notificationCenter postNotificationName:bar object:objB];

此错误的原因是错误的构建设置,如问题发表评论中的讨论所示。 这可以通过将“部署后处理”设置回调试模式的NO(默认值)来修复。

确保将MyFancyClass.m添加到目标

您发送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选择器中的冒号和foo的参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM