【问题标题】:How to find and remove unused class files from a project如何从项目中查找和删除未使用的类文件
【发布时间】:2010-10-08 06:40:41
【问题描述】:

我的 XCode 项目有所增长,我知道其中有不再使用的类文件。有没有一种简单的方法可以找到所有这些并删除它们?

【问题讨论】:

    标签: objective-c cocoa-touch cocoa class xcode3.2


    【解决方案1】:

    如果类文件只是位于您的项目中而不是目标的一部分,只需在树视图中单击项目本身,您就会看到表中的所有文件。确保您在表格视图中看到“目标”列,遍历您的目标并找到任何地方都没有检查的文件 -> 它们不再被编译。

    但是如果你仍然编译这些类并且它们不再被使用,那么这种情况就有点困难了。看看这个项目

    http://www.karppinen.fi/analysistool/#dependency-graphs

    您可以创建一个依赖图并尝试以这种方式查找孤立类。

    编辑:链接失效,但周围似乎仍有 Objective-C 依赖图的项目,例如 https://github.com/nst/objc_dep

    【讨论】:

    • 目标列可能会产生误导,因为它只考虑活动目标。如果该类未在活动目标中使用,但在另一个目标中使用,则目标列即使正在使用,也不会有复选标记。
    • 这就是为什么我建议尝试查找没有检查任何目标的文件的原因。当然,如果你有很多目标,这不会很有趣..
    【解决方案2】:

    如果它们是 C 或 C++ 符号,那么您可以让链接器为您完成工作。

    如果您要删除 objc 符号,请尝试重构类名(例如重命名类),并预览它出现的依赖项。如果您引用类/选择器/等。那么通过字符串......它可能没有那么有效。不幸的是,您通常还必须手动测试,以验证删除一个类不会破坏任何东西。请记住,资源(如 xibs)也可能引用/加载 objc 类。

    【讨论】:

      【解决方案3】:

      这是一个棘手的问题,因为objective-c 是动态的,因为您永远无法保证不会使用某个类。

      如果您在运行时生成一个类名和一个选择器,然后查找该类,实例化该类,然后使用该新创建的选择器对该新创建的对象调用一个方法。您在代码中的任何位置都没有明确命名和实例化该对象,但无论如何您都可以使用它。您可以从代码之外的任何地方获取该类名称和选择器名称,甚至可以从某处服务器的某些数据中获取。你怎么知道哪个类不会被使用?因此,没有任何工具能够执行您的请求。

      【讨论】:

        【解决方案4】:

        使用类名搜索项目可能是一种选择,但认为这可能不是最佳解决方案。特别是当你有很多课程时可能会很耗时。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-05-04
          • 1970-01-01
          • 1970-01-01
          • 2015-07-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多