2014-03-27 1 views
3

7.0에 나타나지 않는 iOS 7.1 시뮬레이터에서 예외가 발생합니다. 그것은 코어의 어딘가에서 처리되는 것처럼 보입니다. 예외 발생 중단 점을 트리거하기 만하기 때문입니다. 콘솔에 로그온하거나 충돌하지 않습니다. 이것은 UIPickerView에서 옵션을 스크롤하는 동안 발생합니다. 이 (오른쪽 UIApplicationMain에서 objc_exception_throw에) 가능한 의미있는 역 추적은 없지만, 디버거에서 던져 동안 예외를 검사하여 보여줍니다 : 나는 mode 내 프로젝트에서 검색 정의되지 않은 키 NSException UIPickerView iOS7.1

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

, setMode:, mode =하지만 난하지 않습니다 내가 이것을 설정하는 사람이라고 생각해. 다른 사람 누구나이 문제에 빠지니? 응용 프로그램을 손상시키지 않아도 괜찮은 것 같지만 두려움을 불러 일으켰습니다. 대신 던져지지 않도록 조치를 취할 것입니다. 좀 더 시간이 있으면 테스트 프로젝트에서 이것을 분리하고 후속 조치를 취할 것입니다.

편집 : 더 나은 역 추적 : 내 경우

  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 
+0

이 valueForUndefinedKey을, 행위의 범죄자를 잡을 UIPickerView''를 통해 카테고리를 만들고'구현하기 위해' 거기에 브레이크 포인트를 두십시오. 누가 문제를 일으키는 지 확인하십시오. 스택 트레이스 UINibDecoder 어딘가에 보일 것이다. nib 파일에 "mode"또는 "_mode"에 대한 키/값 쌍이 있는지 확인하십시오. –

+0

그게 좋은 생각입니다! 불행히도 모든 백 트레이스는 디스어셈블러에 나타나는 라이브러리 코드입니다. 접근성 속성과 관련이있는 것 같습니까? 피커 뷰는 펜촉으로 인스턴스화되지 않습니다. – rogerxyz

+0

네, 스택 추적을 봤어. 이것을 샘플 프로젝트에서 재현 할 수 있습니까? 피커 또는 하위 뷰에 대한 접근성 속성을 설정 했습니까? –

답변

1

, 엑스 코드 6.2과 아이폰 OS 8.2에 불과 충돌 시뮬레이터 (그러나 안전하게 계속할 수 있습니다). _mode은 코드 내에 아무 것도 없으므로 시뮬레이터 버그 또는 잘못된 구성이 있다고 가정하는 것이 안전 할 것입니다. 지금은

, 내가 잘못된 UIPickerView에 카테고리를 사용하고하면 두통을 없애 :

#import "UIPickerView+FixCrash.h" 

@implementation UIPickerView (FixCrash) 

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

@end