使用我剛剛升級到的 Xcode 13.1(在 M1 Pro 上)構建時,在 iOS 9-15 上成功運行的應用程式現在在 iOS 9-12 上啟動時崩潰。
由于使用了僅存在于 iOS 13 上的 UITabBarAppearance,它在主故事板的取消歸檔時崩潰(請參見下面的跟蹤)。我的故事板入口點是 Tab Bar Controller。
我沒有編輯我的故事板檔案,因為它在 iOS 9-15 上使用以前的 Xcode 版本運行,并且崩潰發生在我的任何代碼運行之前。
希望這是一個僅限模擬器的問題(我沒有舊的 iOS 設備)我上傳到商店,但該應用程式在 iOS12 及更低版本的真實設備上啟動時也會崩潰。https://apps.apple.com/nz/app/campermate-australia-nz/id1586561660
最低作業系統目標是 9.0。我們可以放棄對 iOS 9-11 的支持,但我們仍然有大量 iPhone 6 和 5 用戶(僅限于 iOS 12)。
我怎樣才能解決這個問題?
2021-12-15 10:51:09.526554 1300 TTG_Explore_Australia[36783:2248622] libMobileGestalt MobileGestalt.c:890: MGIsDeviceOneOfType is not supported on this platform.
2021-12-15 10:51:09.954515 1300 TTG_Explore_Australia[36783:2248622] *** Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: 'Could not instantiate class named UITabBarAppearance because no class named UITabBarAppearance was found; the class needs to be defined in source code or linked in from a library (ensure the class is part of the correct target)'
*** First throw call stack:
(
0 CoreFoundation 0x0000000113cae8db __exceptionPreprocess 331
1 libobjc.A.dylib 0x0000000113259ac5 objc_exception_throw 48
2 CoreFoundation 0x0000000113cae735 [NSException raise:format:] 197
3 UIFoundation 0x00000001176626c9 UINibDecoderDecodeObjectForValue 360
4 UIFoundation 0x0000000117662af9 UINibDecoderDecodeObjectForValue 1432
5 UIFoundation 0x0000000117662554 -[UINibDecoder decodeObjectForKey:] 251
6 UIKitCore 0x000000011ca0c827 -[UINib instantiateWithOwner:options:] 1306
7 UIKitCore 0x000000011cf28594 -[UIStoryboard instantiateViewControllerWithIdentifier:] 181
8 UIKitCore 0x000000011cd8c809 -[UIApplication _loadMainStoryboardFileNamed:bundle:] 111
9 UIKitCore 0x000000011cd8ccb1 -[UIApplication _loadMainInterfaceFile] 274
10 UIKitCore 0x000000011cd8b3e5 -[UIApplication _runWithMainScene:transitionContext:completion:] 1360
11 UIKitCore 0x000000011c5cfa4e __111-[__UICanvasLifecycleMonitor_Compatability _scheduleFirstCommitForScene:transition:firstActivation:completion:]_block_invoke 904
12 UIKitCore 0x000000011c5d8346 [_UICanvas _enqueuePostSettingUpdateTransactionBlock:] 153
13 UIKitCore 0x000000011c5cf664 -[__UICanvasLifecycleMonitor_Compatability _scheduleFirstCommitForScene:transition:firstActivation:completion:] 236
14 UIKitCore 0x000000011c5cffc0 -[__UICanvasLifecycleMonitor_Compatability activateEventsOnly:withContext:completion:] 1091
15 UIKitCore 0x000000011c5ce332 __82-[_UIApplicationCanvas _transitionLifecycleStateWithTransitionContext:completion:]_block_invoke 782
16 UIKitCore 0x000000011c5cdfe9 -[_UIApplicationCanvas _transitionLifecycleStateWithTransitionContext:completion:] 433
17 UIKitCore 0x000000011c5d2d2e __125-[_UICanvasLifecycleSettingsDiffAction performActionsForCanvas:withUpdatedScene:settingsDiff:fromSettings:transitionContext:]_block_invoke 576
18 UIKitCore 0x000000011c5d3988 _performActionsWithDelayForTransitionContext 100
19 UIKitCore 0x000000011c5d2a95 -[_UICanvasLifecycleSettingsDiffAction performActionsForCanvas:withUpdatedScene:settingsDiff:fromSettings:transitionContext:] 223
20 UIKitCore 0x000000011c5d7a48 -[_UICanvas scene:didUpdateWithDiff:transitionContext:completion:] 392
21 UIKitCore 0x000000011cd89dc8 -[UIApplication workspace:didCreateScene:withTransitionContext:completion:] 514
22 UIKitCore 0x000000011c94102f -[UIApplicationSceneClientAgent scene:didInitializeWithEvent:completion:] 361
23 FrontBoardServices 0x000000011aeb4d25 -[FBSSceneImpl _didCreateWithTransitionContext:completion:] 448
24 FrontBoardServices 0x000000011aebead6 __56-[FBSWorkspace client:handleCreateScene:withCompletion:]_block_invoke_2 283
25 FrontBoardServices 0x000000011aebe300 __40-[FBSWorkspace _performDelegateCallOut:]_block_invoke 53
26 libdispatch.dylib 0x0000000114cc4db5 _dispatch_client_callout 8
27 libdispatch.dylib 0x0000000114cc82ba _dispatch_block_invoke_direct 300
28 FrontBoardServices 0x000000011aef00da __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ 30
29 FrontBoardServices 0x000000011aeefd92 -[FBSSerialQueue _performNext] 451
30 FrontBoardServices 0x000000011aef0327 -[FBSSerialQueue _performNextFromRunLoopSource] 42
31 CoreFoundation 0x0000000113c15db1 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ 17
32 CoreFoundation 0x0000000113c15633 __CFRunLoopDoSources0 243
33 CoreFoundation 0x0000000113c0fcef __CFRunLoopRun 1231
34 CoreFoundation 0x0000000113c0f4d2 CFRunLoopRunSpecific 626
35 GraphicsServices 0x00000001169e62fe GSEventRunModal 65
36 UIKitCore 0x000000011cd8cfc2 UIApplicationMain 140
37 TTG_Explore_Australia 0x0000000100e63dd8 main 104
38 ??? 0x0000000202b024fe 0x0 8635032830
39 ??? 0x0000000000000003 0x0 3
)
libc abi.dylib: terminating with uncaught exception of type NSException
*** Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: 'Could not instantiate class named UITabBarAppearance because no class named UITabBarAppearance was found; the class needs to be defined in source code or linked in from a library (ensure the class is part of the correct target)'
terminating with uncaught exception of type NSException
CoreSimulator 776.4 - Device: iPhone 8 Plus (B0A6FB7E-392D-40E7-AC7C-B6AF109ABE60) - Runtime: iOS 12.4 (16G73) - DeviceType: iPhone 8 Plus
uj5u.com熱心網友回復:
在堆疊跟蹤的底部,它說:
*** 由于未捕獲的例外“NSInvalidUnarchiveOperationException”而終止應用程式,原因:“無法實體化名為 UITabBarAppearance 的類,因為未找到名為 UITabBarAppearance 的類;該類需要在源代碼中定義或從庫中鏈接(確保該類是正確目標的一部分)' 以 NSException 型別的未捕獲例外終止
UITabBarAppearance是在 iOS 13 中引入的,因此它不適用于較舊的 iOS 版本。檢查你的代碼的任何事件UITabBarAppearance,要么洗掉或包裹在if #available。UITabBarAppearance內部使用的故事板也可能有問題。
uj5u.com熱心網友回復:
XCode 在我不知情的情況下偷偷地將這些插入到我的故事板檔案中!
<tabBarAppearance key="standardAppearance"/>
和
<navigationBarAppearance key="standardAppearance"/>
洗掉這些修復它!我在版本檢查中的代碼中設定了 iOS13 的外觀。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/386164.html
