[英]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.