Xcode16+iOS18环境下启动崩溃,报错_objc_warn_deprecated
iOS 18 上从 Xcode 启动应用立即崩溃问题
问题现象
- 使用 Xcode 16.0/16.1 在 iOS 18.0/18.1 设备上构建并运行应用时,启动后立即崩溃,栈追踪如下:
0 libobjc.A.dylib`_objc_warn_deprecated 1 realizeClassWithoutSwift 2 map_images_nolock 3 map_images 4 invocation function for block in dyld4::RuntimeState::setObjCNotifiers(void (*)(char const", mach_header const*), void (*)(mach_header con...apped_info const*), void (*) (unsigned int, _dyld _objc_notify_mapped_info const*, void (unsigned int) block_pointer))::$_0::operator)( const 5 dyld4::RuntimeLocks::withLoadersReadLock 6 dyld4::RuntimeState::setObjCNotifiers 7 dyld4::APIs::_dyld_objc_register_callbacks 8_objc_init 9_os_object_init 10 libdispatch_init 11 libSystem_initializer 12 invocation function for block in dyld4::Loader::findAndRunAllInitializers(dyld4::RuntimeState&) const 13 invocation function for block in dyld3::MachOAnalyzer::forEachinitializer(Diagnostics&, dyld3::MachOAnalyzer::VMAddrConverter const&, void (unsigned int) block_pointer, void const*) const 14 invocation function for block in dyld3::MachOFile::forEachSection(void (dyld3::MachOFile::SectionInfo const&, bool, bool&) block_pointer) const 15 dyld3::MachOFile::forEachLoadCommand 16 dyld3::MachOFile::forEachSection 17 dyld3::MachOAnalyzer::forEachInitializer 18 dyld4::Loader::findAndRunAllinitializers 19 dyld4::JustInTimeLoader::runInitializers 20 dyld4::APIs::runAllinitializersForMain 21 dyld4:: prepare 22 dyld4::start(dyld4::KernelArgs*, void*, void*)::$_0::operatori() const 23 start
- 相同 Xcode 版本下,在 iOS 15 或 iOS 17 设备上运行应用可正常构建启动,仅出现一条无关警告(旧系统运行成功时也会出现):
warning: (arm64) /Users/username/Library/Developer/Xcode/DerivedData/AppName-gevkjrdhpvsixnciokrsaracikam/Build/Products/Debug-iphoneos/AppName.app/AppName empty dSYM file detected, dSYM was created with an executable with no debug info.
背景操作
应用最初基于 Objective-C 编写,后大部分迁移至 Swift,保留了少量 Objective-C 类及桥接文件。为解决 iOS 18 SDK 中 PDFDocument.h 的构建错误(已向 Apple 反馈 FB15106102),我注释了 .pch 文件中的 #import "AppName-Swift.h" 并清理构建文件夹,移除了 Objective-C 到 Swift 的桥接(剩余 Objective-C 代码无需引用 Swift 类)。修改后应用在旧系统正常,但 iOS 18 上启动崩溃。已找到 realizeClassWithoutSwift 源码,但未找到 libobjc.A.dylib _objc_warn_deprecated 相关信息,已向 Apple 反馈崩溃问题(FB15106573)。
更新信息
- 通过方案移除了控制台警告,但崩溃问题仍存在;发现仅从 Xcode 运行时崩溃,手动点击设备上的应用图标可正常运行。
- 升级到 Xcode 16.1 和 iOS 18.1 后,问题依旧。
内容的提问来源于stack exchange,提问作者arlomedia
相关产品推荐
相关产品推荐

