iOS——奇怪的异常(exception)

标签 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 使用的一些内部类。但我没有在我的项目中的任何地方引用该类。

我的应用程序设置为一个选项卡栏应用程序,每个选项卡中都有一个导航 Controller ,这个特定的选项卡有一个 TableView 和选择器 View 。

最佳答案

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

我会启用僵尸。在 Xcode 4.2.1 中,您可以在菜单项 Product > Edit Scheme 中找到它。转到 诊断 选项卡。然后有一个 Enable Zombie Objects 复选框。这将使您过度释放的对象变成僵尸,因此您可以准确找出导致崩溃的对象。

我会阅读 Apple 文档 Technical Note TN2239: iOS Debugging Magic有关这方面的更深入的信息。整个文档都很棒,但您可以先阅读标题为“僵尸!”的部分。和“更多的僵尸!”

关于iOS——奇怪的异常(exception),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9762457/

相关文章:

ios - Google SDK iOS - sign() 方法完成处理程序

ios - 什么时候使用 NSSet 而不是 NSArray 更好?

ios - 将图像设置为桌面 View 背景

iphone - UITableView cellForRowAtIndexPath 与 NSManagedObjects 的问题

ios - TableView NSException

ios uiviewcontroller继承抛出重复符号错误

ios - 使用 IBAction 将数据传递到另一个 View Controller 而不使用 segue swift

cocoa-touch - 在扩展中添加便利的初始值设定项并在子类上调用它们

iOS 在 App 关闭时处理多个 APN

iphone - UISlider 返回两个 Touch Up Inside 事件,为什么会发生这种情况?