添加Swift类后Xcode 9.3控制台无日志输出问题咨询
这种情况我之前在老版本Xcode上碰到过,大概率是Swift和OC混编时的配置冲突或者Pods的编译缓存问题,不是单纯的项目或Xcode配置二选一的问题,得从几个常见点排查:
检查Objective-C Bridging Header配置
打开项目的Build Settings,搜索Objective-C Bridging Header,确认路径是否正确(要相对于项目根目录,比如$(SRCROOT)/YourProject/YourBridgingHeader.h),路径错误会直接导致混编时的日志输出异常。同时检查Install Objective-C Compatibility Header是否设为YES,这个选项是Swift和OC混编的关键配置项。彻底清理Pods缓存与Xcode缓存
老版本Xcode和Pods的组合很容易出现缓存干扰:- 执行终端命令:
pod deintegrate,然后删除项目目录下的Podfile.lock和Pods文件夹 - 重新执行
pod install - 在Xcode中按
Cmd+Shift+K清理项目,再按Cmd+Option+Shift+K清理Derived Data,最后重启Xcode
- 执行终端命令:
检查控制台过滤规则
有时候不是日志没输出,是被过滤掉了:点击控制台顶部的过滤框,切换到All Output,取消勾选Only show debug output之类的限制,同时确认没有输入搜索关键词导致日志被隐藏。排查Other Linker Flags冲突
在Build Settings里搜索Other Linker Flags,查看是否存在重复的-ObjC或-all_load参数。添加Swift类后,这些OC项目常用的链接参数可能和Swift的链接器设置冲突,干扰日志输出模块,尝试移除多余的参数后重新编译。确认Scheme的Build Configuration
按Cmd+<打开Scheme设置,检查Run选项的Build Configuration是否为Debug——Release模式下默认会禁用大部分日志输出,包括崩溃堆栈信息。
这些步骤基本能解决Xcode 9.3在High Sierra上混编Swift后的日志丢失问题,毕竟这个版本的Xcode对Swift混编的支持还不算太完善,缓存和配置冲突是高发问题。
内容的提问来源于stack exchange,提问作者CRoig

