NS Invalid Archive Operation으로 인한 iOS11 WK Webview 충돌예외.
저는 Objective C를 통해 하나의 뷰 컨트롤러/뷰를 가진 iOS 11을 대상으로 하는 SingleView 앱을 개발하고 있습니다.뷰 맨 위에 있는 메인.스토리보드에서 WebKit View(WK웹뷰)를 삭제했습니다.
Simulator와 iOS 11.0.1을 실행하는 iPhone 6에서 충돌이 발생했습니다.
탐지되지 않은 예외 'NS 잘못된 아카이브 해제 작업으로 인해 앱 종료예외', 이유: 'WKebView라는 클래스를 인스턴스화할 수 없습니다.'
다른 작업이 필요합니까? 스토리보드에서 깨면 WK웹뷰를 인스턴스화할 수 없는 것 같습니다.
기타 세부 정보:
- Xcode 버전 9.09A235
- 스토리보드에서 WK웹뷰를 제거하면 충돌이 사라집니다.
- App Base SDK - 최신 iOS (iOS 11); 배포 대상 11.0
- WebView(사용하지 않음) -- UI WebView를 사용하면 작동합니다.
- 수동으로 인스턴스화를 시도하지 않았습니다.
충돌 스택:
2017-11-06 18:38:27.765519+0200 XYZZMap[15689:1093338] *** Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: 'Could not instantiate class named WKWebView'
*** First throw call stack:
(
0 CoreFoundation 0x00000001056d01cb __exceptionPreprocess + 171
1 libobjc.A.dylib 0x0000000105032f41 objc_exception_throw + 48
2 CoreFoundation 0x0000000105744b95 +[NSException raise:format:] + 197
3 UIKit 0x000000010692d2c0 UINibDecoderDecodeObjectForValue + 323
4 UIKit 0x000000010692d5db UINibDecoderDecodeObjectForValue + 1118
5 UIKit 0x000000010692d172 -[UINibDecoder decodeObjectForKey:] + 89
6 UIKit 0x00000001062f866b -[UIView initWithCoder:] + 969
7 UIKit 0x000000010692d43d UINibDecoderDecodeObjectForValue + 704
8 UIKit 0x000000010692d172 -[UINibDecoder decodeObjectForKey:] + 89
9 UIKit 0x00000001066dd1a7 -[UIRuntimeConnection initWithCoder:] + 178
10 UIKit 0x000000010692d43d UINibDecoderDecodeObjectForValue + 704
11 UIKit 0x000000010692d5db UINibDecoderDecodeObjectForValue + 1118
12 UIKit 0x000000010692d172 -[UINibDecoder decodeObjectForKey:] + 89
13 UIKit 0x00000001066dc3a4 -[UINib instantiateWithOwner:options:] + 1262
14 UIKit 0x00000001063f8d07 -[UIViewController _loadViewFromNibNamed:bundle:] + 383
15 UIKit 0x00000001063f9610 -[UIViewController loadView] + 177
16 UIKit 0x00000001063f9941 -[UIViewController loadViewIfRequired] + 195
17 UIKit 0x00000001063fa19e -[UIViewController view] + 27
18 UIKit 0x00000001062cdd17 -[UIWindow addRootViewControllerViewIfPossible] + 122
19 UIKit 0x00000001062ce41f -[UIWindow _setHidden:forced:] + 294
20 UIKit 0x00000001062e12bf -[UIWindow makeKeyAndVisible] + 42
21 UIKit 0x0000000106255015 -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 4711
22 UIKit 0x000000010625a245 -[UIApplication _runWithMainScene:transitionContext:completion:] + 1720
23 UIKit 0x0000000106615c6c __111-[__UICanvasLifecycleMonitor_Compatability _scheduleFirstCommitForScene:transition:firstActivation:completion:]_block_invoke + 924
24 UIKit 0x00000001069e33ef +[_UICanvas _enqueuePostSettingUpdateTransactionBlock:] + 153
25 UIKit 0x0000000106615865 -[__UICanvasLifecycleMonitor_Compatability _scheduleFirstCommitForScene:transition:firstActivation:completion:] + 249
26 UIKit 0x00000001066160c3 -[__UICanvasLifecycleMonitor_Compatability activateEventsOnly:withContext:completion:] + 668
27 UIKit 0x0000000106f73c11 __82-[_UIApplicationCanvas _transitionLifecycleStateWithTransitionContext:completion:]_block_invoke + 262
28 UIKit 0x0000000106f73aca -[_UIApplicationCanvas _transitionLifecycleStateWithTransitionContext:completion:] + 444
29 UIKit 0x0000000106c61b9c __125-[_UICanvasLifecycleSettingsDiffAction performActionsForCanvas:withUpdatedScene:settingsDiff:fromSettings:transitionContext:]_block_invoke + 420
30 UIKit 0x0000000106e5cc3e _performActionsWithDelayForTransitionContext + 100
31 UIKit 0x0000000106c61998 -[_UICanvasLifecycleSettingsDiffAction performActionsForCanvas:withUpdatedScene:settingsDiff:fromSettings:transitionContext:] + 231
32 UIKit 0x00000001069e2a4c -[_UICanvas scene:didUpdateWithDiff:transitionContext:completion:] + 392
33 UIKit 0x0000000106258ac6 -[UIApplication workspace:didCreateScene:withTransitionContext:completion:] + 523
34 UIKit 0x0000000106821523 -[UIApplicationSceneClientAgent scene:didInitializeWithEvent:completion:] + 369
35 FrontBoardServices 0x000000010b539158 -[FBSSceneImpl _didCreateWithTransitionContext:completion:] + 338
36 FrontBoardServices 0x000000010b541c4d __56-[FBSWorkspace client:handleCreateScene:withCompletion:]_block_invoke_2 + 235
37 libdispatch.dylib 0x00000001096b643c _dispatch_client_callout + 8
38 libdispatch.dylib 0x00000001096bbaf4 _dispatch_block_invoke_direct + 592
39 FrontBoardServices 0x000000010b56d672 __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 24
40 FrontBoardServices 0x000000010b56d328 -[FBSSerialQueue _performNext] + 464
41 FrontBoardServices 0x000000010b56d897 -[FBSSerialQueue _performNextFromRunLoopSource] + 45
42 CoreFoundation 0x00000001056732b1 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
43 CoreFoundation 0x0000000105712d31 __CFRunLoopDoSource0 + 81
44 CoreFoundation 0x0000000105657c19 __CFRunLoopDoSources0 + 185
45 CoreFoundation 0x00000001056571ff __CFRunLoopRun + 1279
46 CoreFoundation 0x0000000105656a89 CFRunLoopRunSpecific + 409
47 GraphicsServices 0x000000010be609c6 GSEventRunModal + 62
48 UIKit 0x000000010625bd30 UIApplicationMain + 159
49 XYZZMap 0x00000001047274bf main + 111
50 libdyld.dylib 0x0000000109732d81 start + 1
51 ??? 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
감사합니다!
NS 잘못된 아카이브 해제 작업nib/스토리보드를 로드할 때 예외는 nib/스토리보드에 런타임이 이해할 수 없는 개체가 있음을 의미합니다.그 종류의 객체를 정의하는 프레임워크가 없기 때문입니다.
따라서 이 경우에는 웹킷 프레임워크와 앱 대상을 연결하여 WKebView가 스토리보드에서 디코딩될 때 앱이 WKebView가 무엇인지 파악할 수 있어야 합니다.
다음은 앱이 올바르게 구성되었을 때 앱 대상의 빌드 단계를 보여주는 스크린샷입니다.
Target -> General -> Linked Framework and Libraries -> 아래 + 기호 클릭 -> webKit 검색을 선택합니다.프레임워크 -> 추가합니다.
swift 5.0 + + + 및 Xcode 업데이트 - 11.5 +
링크 후 아래에 언급한 이 문제에 직면하셨다면.WKWebView
인에storyboard
.
NS 잘못된 아카이브 해제 작업예외', 이유: 'WKwebView라는 클래스를 찾을 수 없으므로 WKwebView라는 클래스를 인스턴스화할 수 없습니다. 클래스를 소스 코드로 정의하거나 라이브러리에서 링크해야 합니다(클래스가 올바른 대상의 일부인지 확인하십시오).
이 지침을 따라 새로운 방법으로 해결하면 됩니다.Xcode
.
다음은 프로젝트가 올바르게 구성되었을 때 프로젝트 대상의 빌드 단계를 보여주는 스크린샷입니다.
스토리보드에 다음과 같은 정보가 있는지 확인합니다.WKWebView
코드에 있는 동안 당신은 a를 가질 수 있습니다.UIWebView
사례
Project Target(프로젝트 대상)을 클릭한 다음 webKit(웹킷)을 추가합니다.아래와 같은 프레임워크:
일반 -> 연결된 프레임워크 및 라이브러리 -> 아래 + 기호 클릭 -> webKit 검색프레임워크 -> 추가합니다.
저도 같은 종류의 문제에 직면했습니다.
WK웹뷰를 아웃렛으로 선언하지 않음
시뮬레이터에서 실행하는 동안 이 오류가 발생했습니다.
아울렛을 추가하고 나니 잘 되었습니다.
도움이 되길 바라요 :)
언급URL : https://stackoverflow.com/questions/47142434/ios11-wkwebview-crash-due-to-nsinvalidunarchiveoperationexception
'programing' 카테고리의 다른 글
C#에서 (마지막 부분의) 현재 디렉터리 이름 가져오기 (0) | 2023.10.21 |
---|---|
디렉토리를 재배치한 후 MariaDB가 시작되지 않습니다. (0) | 2023.10.21 |
SVG 둥근 모서리 (0) | 2023.10.21 |
테스트 요소 지시 - 테스트 중에 분리된 스코프 메서드에 액세스할 수 없습니다. (0) | 2023.10.21 |
PL/SQL에서 텍스트를 XML 호환 텍스트로 변환/인코딩하는 방법이 있습니까? (0) | 2023.10.21 |