默认Documentation Target构建失败,Objective-C垃圾回收不再支持求解决
解决appledoc因Objective-C垃圾回收不支持导致的构建失败问题
这个报错的核心原因很明确:你使用的旧版appledoc是基于Objective-C垃圾回收(GC)机制编译的,而现在的macOS和Xcode已经完全移除了对Objective-C垃圾回收的支持,所以运行appledoc时直接触发崩溃,导致Build Phase的脚本执行失败。
下面是具体的修复步骤:
1. 替换为维护版的appledoc
官方原版的appledoc已经停止维护多年,依赖的GC机制早已被淘汰。你需要安装一个社区维护的fork版本,这些版本已经移除了GC依赖,适配了新系统:
- 如果用Homebrew安装,执行以下命令:
brew install tomaz/appledoc/appledoc - 如果你习惯手动编译,可以从GitHub上克隆最新的维护分支(比如
tomaz/appledoc),然后用Xcode编译安装,确保生成的appledoc二进制是基于ARC而非GC的。
2. 更新Build Phase中的脚本路径
安装完成后,需要修改你Documentation Target里的Shell脚本,确保调用的是新安装的appledoc路径:
- 原来的脚本里写的是
/Applications/appledoc,Homebrew安装的话,Intel Mac的路径通常是/usr/local/bin/appledoc,M1/M2 Mac则是/opt/homebrew/bin/appledoc - 修改后的脚本示例:
/usr/local/bin/appledoc --verbose xcode $SOURCE_ROOT/$PROJECT_NAME
3. 再次清理并构建
做完上述修改后,再执行一次Xcode > Product > Clean Build Folder...,然后重新构建Documentation Target,应该就能解决问题了。
补充说明
你之前尝试的Clean、清空DerivedData、重启Xcode这些操作,只能解决缓存相关的问题,但无法解决appledoc本身依赖废弃机制的根本性问题,所以必须替换为适配新系统的版本才行。
内容的提问来源于stack exchange,提问作者meaning-matters
相关产品推荐
相关产品推荐

