ios - UIPickerView iOS7.1 中的未定义键 NSException

标签 ios objective-c exception ios7.1

我在 iOS 7.1 模拟器中遇到一个异常,该异常在 7.0 中没有出现。它似乎在核心的某个地方被处理,因为它只触发异常引发断点。它不会记录到控制台或崩溃。在 UIPickerView 中滚动选项时会发生这种情况。没有可用的有意义的回溯(从 UIApplicationMain 到 objc_exception_throw),但在调试器中检查抛出期间的异常显示:

[<UIPickerView 0xb9a6700> valueForUndefinedKey:]: this class is not key value coding-compliant for the key _mode.

我在我的项目中搜索了 mode , setMode: , mode =但我不认为我是设置它的人。还有其他人遇到这个吗?我想如果它没有让应用程序崩溃也没关系,但它给了我一个 panic ,我宁愿采取行动防止它被抛出。如果我有更多时间,我会尝试在测试项目中隔离它并跟进。

编辑:更好的回溯:

         thread #1: tid = 0x10975c, 0x02590909 libc++abi.dylib`__cxa_throw, queue = 'com.apple.main-thread, stop reason = breakpoint 1.2
     frame #0: 0x02590909 libc++abi.dylib`__cxa_throw
     frame #1: 0x01b1d9fc libobjc.A.dylib`objc_exception_throw + 323
     frame #2: 0x020e1fe1 CoreFoundation`-[NSException raise] + 17
     frame #3: 0x017ddc7a Foundation`-[NSObject(NSKeyValueCoding) valueForUndefinedKey:] + 282
     frame #4: 0x0174adfd Foundation`_NSGetUsingKeyValueGetter + 81
     frame #5: 0x0174a437 Foundation`-[NSObject(NSKeyValueCoding) valueForKey:] + 260
     frame #6: 0x0d615dff AccessibilityUtilities`-[NSObject(UIAccessibilitySafeCategory) safeValueForKey:] + 43
     frame #7: 0x1151c1f6 UIKit`-[UIAccessibilityPickerComponent accessibilityTraits] + 398
     frame #8: 0x0d716021 UIAccessibility`-[NSObject(AXPrivCategory) accessibilityAttributeValue:] + 1865
     frame #9: 0x0d70a7d7 UIAccessibility`_copyMultipleAttributeValuesCallback + 409
     frame #10: 0x0d76c537 AXRuntime`_AXXMIGCopyMultipleAttributeValues + 202
     frame #11: 0x0d767e78 AXRuntime`_XCopyMultipleAttributeValues + 473
     frame #12: 0x0d7726b4 AXRuntime`mshMIGPerform + 256
     frame #13: 0x01fcdca5 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 53
     frame #14: 0x01fcd9db CoreFoundation`__CFRunLoopDoSource1 + 523
     frame #15: 0x01ff868c CoreFoundation`__CFRunLoopRun + 2156
     frame #16: 0x01ff79d3 CoreFoundation`CFRunLoopRunSpecific + 467
     frame #17: 0x01ff77eb CoreFoundation`CFRunLoopRunInMode + 123
     frame #18: 0x03fea5ee GraphicsServices`GSEventRunModal + 192
     frame #19: 0x03fea42b GraphicsServices`GSEventRun + 104
     frame #20: 0x007ddf9b UIKit`UIApplicationMain + 1225
     frame #21: 0x0004863d [redacted]`main(argc=1, argv=0xbfffef50) + 141 at main.m:16

最佳答案

就我而言,在 Xcode 6.2 和 iOS 8.2 上,只有模拟器崩溃(但可以安全地继续)。由于 _mode 不在我们的代码中,因此可以安全地假设存在模拟器错误或配置错误。

现在,我在有问题的 UIPickerView 上使用一个类别来摆脱烦恼:

#import "UIPickerView+FixCrash.h"

@implementation UIPickerView (FixCrash)

#if TARGET_IPHONE_SIMULATOR
- (id)valueForUndefinedKey:(NSString *)key
{
    return nil;
}
#endif

@end

关于ios - UIPickerView iOS7.1 中的未定义键 NSException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22697817/

相关文章:

objective-c - NSTask 失败 22 终止临时进程 cocoa

android - 创建支持多屏幕(2.2 及以上)的应用程序

ios - iOS Playground do 方法中的 Json 解析未解析

ios - 如何将用户数据存储为字符串,并在 viewDidLoad 中加载该字符串

iphone - UIPinchGestureRecognizer 在不同的 x 和 y 方向缩放 View

python - 尝试自动化浏览器时 Selenium 中的 ElementNotInteractableException

sockets - java.net.SocketException : Invalid argument

ios - 将多个数据数组显示到单个 TableView 部分的有效方法

ios - 在 SWRevealViewController 中突出显示事件链接

ios - 我可以将 AVAudioRecorder 与外部麦克风一起使用吗?