Ma c Приложение Catalyst аварийно завершает работу при запуске, если приложение будет / didFinishLaunching методы существуют - PullRequest
1 голос
/ 24 апреля 2020

У меня действительно странная проблема.

Моя мама c Приложение Catalyst падает при запуске со следующим исключением в AppDelegate.swift:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSDictionaryM setObject:forKey:]: object cannot be nil (key: title)'

Некоторая информация что проект является Ma c Catalyst приложением, портированным из существующего приложения iOS / iPadOS, и оно не использует SwiftUI и не использовать несколько сцен. Исключение происходит в классе AppDelegate.

Однако отладчик указывает на строку объявления класса, а не на какой-либо мой написанный код, поэтому я считаю, что это внутренняя ошибка.

Интересно, я немного покопался и определили, что в тот момент, когда я удалил методы application(_:willFinishLaunchingWithOptions:) и application(_:didFinishLaunchingWithOptions:) из моего AppDelegate, приложение работает нормально. Даже пустое объявление вроде этого:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    return true
}

приведет к тому, что приложение обработает sh, тогда как без учета метода позволит приложению нормально работать.

Вот трассировка стека:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSDictionaryM setObject:forKey:]: object cannot be nil (key: title)'
*** First throw call stack:
(
    0   CoreFoundation                      0x00007fff35ac5d07 __exceptionPreprocess + 250
    1   libobjc.A.dylib                     0x00007fff6e7ea5bf objc_exception_throw + 48
    2   CoreFoundation                      0x00007fff35b7463e -[__NSCFString characterAtIndex:].cold.1 + 0
    3   CoreFoundation                      0x00007fff35b7f19c -[__NSDictionaryM setObject:forKey:].cold.3 + 0
    4   CoreFoundation                      0x00007fff35a03459 -[__NSDictionaryM setObject:forKey:] + 976
    5   UIKitCore                           0x00007fff764748eb -[_UIMenuBarItem properties] + 99
    6   UIKitMacHelper                      0x00007fff66bf872a UINSNSMenuItemFromUINSMenuItem + 90
    7   UIKitMacHelper                      0x00007fff66bf8340 _insertUINSMenuItemsIntoNSMenu + 1135
    8   UIKitMacHelper                      0x00007fff66bf7da8 UINSNSMenuFromUINSMenu + 119
    9   UIKitMacHelper                      0x00007fff66bf7c49 -[UINSMenuController _createNSMenu:forContextMenu:] + 79
    10  UIKitMacHelper                      0x00007fff66bf7b09 -[UINSMenuController setMainMenuBar:] + 70
    11  UIKitCore                           0x00007fff764687d6 -[_UIMenuBarController _rebuildRootCommandGroup] + 229
    12  UIKitCore                           0x00007fff763113a2 -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 801
    13  UIKitCore                           0x00007fff76310a33 -[UIApplication _callInitializationDelegatesWithActions:forCanvas:payload:fromOriginatingProcess:] + 5775
    14  UIKitCore                           0x00007fff7630de2b -[UIApplication _runWithMainScene:transitionContext:completion:] + 1319
    15  UIKitCore                           0x00007fff7630d7fb -[_UISceneLifecycleMultiplexer completeApplicationLaunchWithFBSScene:transitionContext:] + 122
    16  UIKitCore                           0x00007fff76308a07 _UIScenePerformActionsWithLifecycleActionMask + 83
    17  UIKitCore                           0x00007fff7630cf45 __101-[_UISceneLifecycleMultiplexer _evalTransitionToSettings:fromSettings:forceExit:withTransitionStore:]_block_invoke + 198
    18  UIKitCore                           0x00007fff7630cd28 -[_UISceneLifecycleMultiplexer _performBlock:withApplicationOfDeactivationReasons:fromReasons:] + 467
    19  UIKitCore                           0x00007fff7630bf21 -[_UISceneLifecycleMultiplexer _evalTransitionToSettings:fromSettings:forceExit:withTransitionStore:] + 823
    20  UIKitCore                           0x00007fff7630bb42 -[_UISceneLifecycleMultiplexer uiScene:transitionedFromState:withTransitionContext:] + 350
    21  UIKitCore                           0x00007fff7678e853 __186-[_UIWindowSceneFBSSceneTransitionContextDrivenLifecycleSettingsDiffAction _performActionsForUIScene:withUpdatedFBSScene:settingsDiff:fromSettings:transitionContext:lifecycleActionType:]_block_invoke_2 + 178
    22  UIKitCore                           0x00007fff7630a0a3 +[BSAnimationSettings(UIKit) tryAnimatingWithSettings:actions:completion:] + 832
    23  UIKitCore                           0x00007fff763095f2 _UISceneSettingsDiffActionPerformChangesWithTransitionContext + 240
    24  UIKitCore                           0x00007fff763092bf __186-[_UIWindowSceneFBSSceneTransitionContextDrivenLifecycleSettingsDiffAction _performActionsForUIScene:withUpdatedFBSScene:settingsDiff:fromSettings:transitionContext:lifecycleActionType:]_block_invoke + 153
    25  UIKitCore                           0x00007fff7630920c _UISceneSettingsDiffActionPerformActionsWithDelayForTransitionContext + 84
    26  UIKitCore                           0x00007fff76308f4a -[_UIWindowSceneFBSSceneTransitionContextDrivenLifecycleSettingsDiffAction _performActionsForUIScene:withUpdatedFBSScene:settingsDiff:fromSettings:transitionContext:lifecycleActionType:] + 379
    27  UIKitCore                           0x00007fff763083cb __64-[UIScene scene:didUpdateWithDiff:transitionContext:completion:]_block_invoke + 685
    28  UIKitCore                           0x00007fff76307aef -[UIScene _emitSceneSettingsUpdateResponseForCompletion:afterSceneUpdateWork:] + 262
    29  UIKitCore                           0x00007fff763079a4 -[UIScene scene:didUpdateWithDiff:transitionContext:completion:] + 210
    30  UIKitCore                           0x00007fff762fa3b8 -[UIApplication workspace:didCreateScene:withTransitionContext:completion:] + 524
    31  UIKitCore                           0x00007fff762fa122 -[UIApplicationSceneClientAgent scene:didInitializeWithEvent:completion:] + 361
    32  FrontBoardServices                  0x00007fff5225a25d -[FBSSceneImpl _callOutQueue_agent_didCreateWithTransitionContext:completion:] + 453
    33  FrontBoardServices                  0x00007fff5225a083 __86-[FBSWorkspaceScenesClient sceneID:createWithParameters:transitionContext:completion:]_block_invoke.156 + 102
    34  FrontBoardServices                  0x00007fff52259f02 -[FBSWorkspace _calloutQueue_executeCalloutFromSource:withBlock:] + 220
    35  FrontBoardServices                  0x00007fff52259b0d __86-[FBSWorkspaceScenesClient sceneID:createWithParameters:transitionContext:completion:]_block_invoke + 354
    36  libdispatch.dylib                   0x000000010091e826 _dispatch_client_callout + 8
    37  libdispatch.dylib                   0x0000000100922070 _dispatch_block_invoke_direct + 289
    38  FrontBoardServices                  0x00007fff52259996 __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 30
    39  FrontBoardServices                  0x00007fff52259766 -[FBSSerialQueue _queue_performNextIfPossible] + 441
    40  FrontBoardServices                  0x00007fff52259593 -[FBSSerialQueue _performNextFromRunLoopSource] + 22
    41  CoreFoundation                      0x00007fff35a49f12 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
    42  CoreFoundation                      0x00007fff35a49eb1 __CFRunLoopDoSource0 + 103
    43  CoreFoundation                      0x00007fff35a49ccb __CFRunLoopDoSources0 + 209
    44  CoreFoundation                      0x00007fff35a489fa __CFRunLoopRun + 927
    45  CoreFoundation                      0x00007fff35a47ffe CFRunLoopRunSpecific + 462
    46  HIToolbox                           0x00007fff3467babd RunCurrentEventLoopInMode + 292
    47  HIToolbox                           0x00007fff3467b6f4 ReceiveNextEventCommon + 359
    48  HIToolbox                           0x00007fff3467b579 _BlockUntilNextEventMatchingListInModeWithFilter + 64
    49  AppKit                              0x00007fff32cc6c99 _DPSNextEvent + 883
    50  AppKit                              0x00007fff32cc54e0 -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1352
    51  AppKit                              0x00007fff32cb71ee -[NSApplication run] + 658
    52  AppKit                              0x00007fff32c88ff6 NSApplicationMain + 777
    53  AppKit                              0x00007fff32faaa85 _NSApplicationMainWithInfoDictionary + 16
    54  UIKitMacHelper                      0x00007fff66bf4e00 UINSApplicationMain + 322
    55  UIKitCore                           0x00007fff762db6ff UIApplicationMain + 2130
    56  <Project Name>                      0x00000001002222db main + 75
    57  libdyld.dylib                       0x00007fff6f991cc9 start + 1
    58  ???                                 0x0000000000000003 0x0 + 3
)
libc++abi.dylib: terminating with uncaught exception of type NSException

Я не могу воссоздать эту проблему с новым проектом XCode.

Есть идеи, как решить эту проблему? Заранее большое спасибо.

1 Ответ

1 голос
/ 24 апреля 2020

Кажется, что CFBundleName может отсутствовать в вашем Info.plist.

Подсказка в ошибке:

[__NSDictionaryM setObject:forKey:]: object cannot be nil (key: title)

...