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

如何在XCode中查找iOS项目内所有未被使用的方法与变量

iOS老旧项目冗余代码排查方案

该操作完全可以实现,不过需要注意:由于Objective-C支持Runtime动态调用、Swift也存在反射、字符串构造Selector等场景,静态扫描工具无法100%覆盖所有调用场景,扫描结果需要二次校验,避免误删有效代码。

一、Xcode内置工具排查(无需额外安装依赖)

  • 开启编译警告直接识别冗余声明
    进入项目Build Settings页面,开启以下配置,正常编译后即可在警告列表直接查看未使用的变量、方法、常量:
    • 搜索Unused Variables设置为YES
    • 搜索Unused Function设置为YES
    • 搜索Unused Instance Variables设置为YES
    • Swift项目额外搜索Unused Declaration设置为YES
  • 通过Link Map文件排查未调用类
    1. Build Settings中搜索Write Link Map File设置为YES
    2. 编译项目后在Derived Data对应目录下找到后缀为.txt的Link Map文件
    3. 筛选__text段的符号信息,和项目源码列表对比,即可找出从未被链接的冗余类

二、第三方静态扫描工具

  • AppCode静态分析:
    用AppCode打开项目后,点击顶部菜单栏Code -> Inspect Code,选择整个项目扫描,结果中Unused declaration分类会完整列出未被调用的方法、变量、类、协议,同时支持OC和Swift项目,准确率远高于Xcode自带工具。
  • fui(Find Unused Imports):
    专门针对OC项目排查未使用的头文件,终端进入项目根目录执行fui find即可输出所有无引用的头文件,对应实现类一般也属于可清理的冗余资源。
  • Periphery:
    Swift项目专用扫描工具,执行扫描命令后会输出未使用的类、结构体、方法、变量、协议,支持自定义忽略测试目标、忽略被@objc标记的声明,大幅降低误判率。

三、二次校验规则(避免误删有效代码)

  • 对扫描出的疑似冗余代码,先全局搜索对应方法名、变量名,确认不存在NSSelectorFromString、performSelector、Swift反射调用等动态调用场景,再进行清理
  • 批量清理前可使用Xcode的Edit -> Refactor -> Rename功能,输入待清理的方法/类名,确认全局无引用后再删除
  • 清理完成后跑通所有单元测试、UI测试,覆盖核心业务流程验证功能正常

四、特殊场景注意事项

  • 被#if宏包裹的多环境代码,扫描工具会默认判定为未使用,注意区分不同环境的编译逻辑
  • 埋点、动态下发配置关联的方法,可能不存在静态引用,不要直接判定为冗余代码
  • 类目(Category)中的方法如果没有被调用,绝大多数扫描工具无法识别,需要手动排查

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:48:02