You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS启动时Storyboard引发崩溃遭App Store 2.1条款拒绝求助

App Store审核崩溃(Storyboard相关)排查思路

我的应用因违反App Store审核指南2.1 - 性能 - 应用完整性条款持续被拒,收到审核方提供的崩溃报告。推测问题源于Storyboard,但数周未能解决。崩溃栈关联到第39行的BaseCollectionViewCell,但该文件仅在deinit时打印日志,无特殊逻辑。

崩溃日志(中文翻译)

异常类型:  EXC_CRASH (SIGABRT)
异常代码: 0x0000000000000000, 0x0000000000000000
触发线程:  0

应用特定信息:
abort() 被调用


最后异常调用栈:
0   CoreFoundation                         0x195659e88 __exceptionPreprocess + 164
1   libobjc.A.dylib                        0x18ea078d8 objc_exception_throw + 60
2   UIKitCore                              0x197c1d16c -[UIStoryboard initWithBundle:storyboardFileName:identifierToNibNameMap:identifierToExternalStoryboardReferenceMap:designatedEntryPointIdentifier:designatedMenuIdentifier:] + 0
3   UIKitCore                              0x197ab3590 -[UIApplication _loadMainStoryboardFileNamed:bundle:] + 80
4   UIKitCore                              0x197beef24 -[UIApplication _loadMainInterfaceFile] + 156
5   UIKitCore                              0x197b65ee0 -[UIApplication _runWithMainScene:transitionContext:completion:] + 688
6   UIKitCore                              0x197b65bd4 -[_UISceneLifecycleMultiplexer completeApplicationLaunchWithFBSScene:transitionContext:] + 132
7   UIKitCore                              0x1978ab600 _UIScenePerformActionsWithLifecycleActionMask + 108
8   UIKitCore                              0x197bed918 __101-[_UISceneLifecycleMultiplexer _evalTransitionToSettings:fromSettings:forceExit:withTransitionStore:]_block_invoke + 216
9   UIKitCore                              0x197a9dfa4 -[_UISceneLifecycleMultiplexer _performBlock:withApplicationOfDeactivationReasons:fromReasons:] + 220
10  UIKitCore                              0x197a9ddcc -[_UISceneLifecycleMultiplexer _evalTransitionToSettings:fromSettings:forceExit:withTransitionStore:] + 620
11  UIKitCore                              0x197a9d97c -[_UISceneLifecycleMultiplexer uiScene:transitionedFromState:withTransitionContext:] + 252
12  UIKitCore                              0x197a9d848 __186-[_UIWindowSceneFBSSceneTransitionContextDrivenLifecycleSettingsDiffAction _performActionsForUIScene:withUpdatedFBSScene:settingsDiff:fromSettings:transitionContext:lifecycleActionType:]_block_invoke + 148
13  UIKitCore                              0x19817ffa8 +[BSAnimationSettings(UIKit) tryAnimatingWithSettings:fromCurrentState:actions:completion:] + 736
14  UIKitCore                              0x198218f98 _UISceneSettingsDiffActionPerformChangesWithTransitionContextAndCompletion + 224
15  UIKitCore                              0x197949958 -[_UIWindowSceneFBSSceneTransitionContextDrivenLifecycleSettingsDiffAction _performActionsForUIScene:withUpdatedFBSScene:settingsDiff:fromSettings:transitionContext:lifecycleActionType:] + 316
16  UIKitCore                              0x197dbc7a8 __64-[UIScene scene:didUpdateWithDiff:transitionContext:completion:]_block_invoke.214 + 556
17  UIKitCore                              0x197a1c0b8 -[UIScene _emitSceneSettingsUpdateResponseForCompletion:afterSceneUpdateWork:] + 216
18  UIKitCore                              0x197a1bf28 -[UIScene scene:didUpdateWithDiff:transitionContext:completion:] + 244
19  UIKitCore                              0x197a1b47c -[UIApplication workspace:didCreateScene:withTransitionContext:completion:] + 520
20  UIKitCore                              0x197a1b208 -[UIApplicationSceneClientAgent scene:didInitializeWithEvent:completion:] + 288
21  FrontBoardServices                     0x1ab269500 -[FBSScene _callOutQueue_agent_didCreateWithTransitionContext:completion:] + 344
22  FrontBoardServices                     0x1ab2a851c __92-[FBSWorkspaceScenesClient createSceneWithIdentity:parameters:transitionContext:completion:]_block_invoke.78 + 120
23  FrontBoardServices                     0x1ab26d294 -[FBSWorkspace _calloutQueue_executeCalloutFromSource:withBlock:] + 168
24  FrontBoardServices                     0x1ab2a8154 __92-[FBSWorkspaceScenesClient createSceneWithIdentity:parameters:transitionContext:completion:]_block_invoke + 360
25  libdispatch.dylib                      0x19cc25fdc _dispatch_client_callout + 20
26  libdispatch.dylib                      0x19cc29a5c _dispatch_block_invoke_direct + 264
27  FrontBoardServices                     0x1ab2773b0 __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 52
28  FrontBoardServices                     0x1ab276f4c -[FBSSerialQueue _targetQueue_performNextIfPossible] + 220
29  FrontBoardServices                     0x1ab27972c -[FBSSerialQueue _performNextFromRunLoopSource] + 28
30  CoreFoundation                         0x195725f54 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 28
31  CoreFoundation                         0x19573232c __CFRunLoopDoSource0 + 176
32  CoreFoundation                         0x1956b6210 __CFRunLoopDoSources0 + 244
33  CoreFoundation                         0x1956cbba8 __CFRunLoopRun + 836
34  CoreFoundation                         0x1956d0ed4 CFRunLoopRunSpecific + 612
35  GraphicsServices                       0x1ce12d368 GSEventRunModal + 164
36  UIKitCore                              0x197baf3d0 -[UIApplication _run] + 888
37  UIKitCore                              0x197baf034 UIApplicationMain + 340
38  libswiftUIKit.dylib                    0x19e19b308 UIApplicationMain(_:_:_:_:) + 104
39  MyApp                                  0x102aab394 main + 29588 (BaseCollectionViewCell.swift:0)
40  dyld                                   0x1b3d28960 start + 2528

排查思路

  • 不要被BaseCollectionViewCell的关联误导:崩溃栈第39行的关联大概率是Release编译优化导致的符号表偏差,从栈顶第2-5行可明确,崩溃发生在主Storyboard加载初始化阶段,核心问题在Storyboard本身或其引用的资源/代码。

  • 检查Storyboard基础配置与资源

    • 核对Info.plist中UIMainStoryboardFile的配置值,确保和主Storyboard文件名完全一致(大小写、拼写无误差)
    • 检查Storyboard内所有资源引用:图片是否存在于Asset Catalog中、字体是否正确导入并在Info.plist声明、自定义类的模块选择是否正确(Swift项目需选择当前App模块)
    • 验证Storyboard中的所有IBOutlet/IBAction连接:是否存在无效连接(控件已删除但连接未清理),或连接到了不存在的方法/属性
  • 排查自定义控件的初始化异常

    • 检查所有在Storyboard中使用的自定义Cell(包括BaseCollectionViewCell的子类)的init?(coder: NSCoder)方法:必须调用super.init(coder: coder),避免强制解包可能为nil的变量
    • 若自定义Cell有awakeFromNib方法,检查其中的逻辑是否存在异常(比如访问未初始化的资源、数组越界等)
  • 复现并精准捕获异常

    • 使用Xcode的Archive模式打包,在真机上运行(尽量匹配审核使用的iOS版本和设备类型)
    • 添加All Exceptions断点:在Xcode的Breakpoint Navigator中创建异常断点,设置为捕获所有异常,这样崩溃时会停在具体抛出异常的代码行
    • 临时关闭Release模式的编译优化:在Build Settings中把Optimization Level改为None [-O0],重新打包测试,此时崩溃栈的行号会更准确
  • 验证Storyboard的完整性

    • 尝试重新创建主Storyboard:复制原内容到新文件中替换原文件,排除文件本身损坏的可能
    • 检查外部Storyboard引用:若主Storyboard引用了其他Storyboard,确认被引用文件存在且路径正确

内容的提问来源于stack exchange,提问作者HongCoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 04:25:32