15

升级到 xcode 5 后,我在使用 lldb 调试器从控制台调试时遇到问题。我曾经输入过po object它曾经可以正常工作,但是现在我得到了错误

error: instance method 'performBlock:afterDelay:' has incompatible result types in different translation units ('id' vs. 'void')
note: instance method 'performBlock:afterDelay:' also declared here

这是堆栈的屏幕截图,调试器停止的代码,可视调试器和调试器控制台中的值。可能是什么问题,是xcode 5中的错误还是我可以做些什么来纠正这个问题?

4

1 回答 1

7

我找到了解决此问题的方法。问题是我个人的内部框架在NSObject调用的类别中声明了一个方法:

- (void)performBlock:(void (^)(void))block afterDelay:(NSTimeInterval)delay;

但是第三方框架(这里是 BlocksKit)声明了同样的方法:

- (id)performBlock:(void (^)(void))block afterDelay:(NSTimeInterval)delay;

这两个似乎干扰了 LLDB 的运行时并产生了这个奇怪的消息。为了解决这个问题,我只是更改了其中一个方法名称。请让我知道这是否适合您。

于 2013-09-26T12:15:15.317 回答