如何解决“无法识别的选择器发送到实例”

时间:2014-02-26 07:22:39

标签: ios iphone objective-c cocoa debugging

我知道这个问题被多次询问过,而且我知道它正在调用不属于该类的选择器。

但是,我想知道纠正这些类型错误的最佳方法。我在调试控制台中收到以下错误:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[ViewController length]: unrecognized selector sent to instance 0x76908e0'

我确定,我没有在这个控制器中编写的代码中的任何地方调用长度属性。

我尝试逐行调试它,它在二进制文件中的某处崩溃,我无法确定崩溃应用程序的确切原因。

我还尝试使用NSZombieEnabled运行该应用程序,但也没有取得任何成功。

有人可以帮我解决这些问题吗?了解原因的最佳方法是什么?

提前致谢。

** * ** * ** * 的*** 已解决 ** * ** * ** * ** * ****

我添加了以下UITableViewDelegate方法,但未在此处返回anythign:

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {

}

导致崩溃。当我刚读完整个资料时,我得到了这个。谢谢大家的支持。

3 个答案:

答案 0 :(得分:1)

你在你认为有长度属性的东西上调用了-length,但实际上是你的ViewController类的一个实例。

发布一些代码,因为长度可以通过各种方法和类隐式调用,这里有人可能会发现它。

另外,你应该去Debug>>断点>> CreateExceptionBreakpoint使调试器在任何时候抛出异常时暂停执行。大多数情况下,这将在抛出此异常的调用上停止,如果不是一步或两步或调用堆栈的一个或两个级别。

答案 1 :(得分:0)

检查此控制器中属性的强弱属性。我认为你有任何弱势的财产,它应该是强大的。

当您的应用程序崩溃时检查Debug Navigator,有时您可以看到跟踪,这有助于您

答案 2 :(得分:0)

-[NSObject doesNotRecognizeSelector:]中创建一个符号断点,与this answer中一样。