iOS - 奇怪的例外

时间:2012-03-18 21:30:21

标签: ios cocoa-touch uitableview uipickerview

我在Xcode 4.2.1(启用ARC的项目)中遇到一个奇怪的异常,我无法追查到问题的根源。

这就是异常的样子:

2012-03-18 22:19:32.855 Project[14225:707] +[UIPickerTableViewTitledCell isEqualToString:]: unrecognized selector sent to class 0x3f2bbec4
2012-03-18 22:19:32.859 Project[14225:707] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[UIPickerTableViewTitledCell isEqualToString:]: unrecognized selector sent to class 0x3f2bbec4'

什么是UIPickerTableViewTitledCell?我想这是UIPickerView使用的内部类。但我在项目的任何地方都没有引用该课程。

我的应用程序设置为Tab Bar应用程序,每个选项卡中都有一个导航控制器,此特定选项卡有一个tableview和pickerview。

1 个答案:

答案 0 :(得分:3)

听起来你有一个过度释放的物体。我知道在ARC之前的代码中,释放被称为太多次了。代码听起来像是在寻找一个NSString来发送isEqualToString:to,但它不是获取已经发布的NSString,而是获取UIPickerTableViewTitledCell的这个随机实例。

我会启用Zombies。在Xcode 4.2.1中,您可以在菜单项Product > Edit Scheme中找到它。转到Diagnostics标签。然后是Enable Zombie Objects复选框。这将使您的过度释放对象成为僵尸,这样您就可以准确找出导致崩溃的对象。

我会阅读Apple doc Technical Note TN2239: iOS Debugging Magic以获取更深入的信息。整个文档很棒,但你可以从阅读标题为“僵尸!”的部分开始。和“更多的僵尸!”