【发布时间】:2010-10-08 06:40:41
【问题描述】:
我的 XCode 项目有所增长,我知道其中有不再使用的类文件。有没有一种简单的方法可以找到所有这些并删除它们?
【问题讨论】:
标签: objective-c cocoa-touch cocoa class xcode3.2
我的 XCode 项目有所增长,我知道其中有不再使用的类文件。有没有一种简单的方法可以找到所有这些并删除它们?
【问题讨论】:
标签: objective-c cocoa-touch cocoa class xcode3.2
如果类文件只是位于您的项目中而不是目标的一部分,只需在树视图中单击项目本身,您就会看到表中的所有文件。确保您在表格视图中看到“目标”列,遍历您的目标并找到任何地方都没有检查的文件 -> 它们不再被编译。
但是如果你仍然编译这些类并且它们不再被使用,那么这种情况就有点困难了。看看这个项目
http://www.karppinen.fi/analysistool/#dependency-graphs
您可以创建一个依赖图并尝试以这种方式查找孤立类。
编辑:链接失效,但周围似乎仍有 Objective-C 依赖图的项目,例如 https://github.com/nst/objc_dep
【讨论】:
如果它们是 C 或 C++ 符号,那么您可以让链接器为您完成工作。
如果您要删除 objc 符号,请尝试重构类名(例如重命名类),并预览它出现的依赖项。如果您引用类/选择器/等。那么通过字符串......它可能没有那么有效。不幸的是,您通常还必须手动测试,以验证删除一个类不会破坏任何东西。请记住,资源(如 xibs)也可能引用/加载 objc 类。
【讨论】:
这是一个棘手的问题,因为objective-c 是动态的,因为您永远无法保证不会使用某个类。
如果您在运行时生成一个类名和一个选择器,然后查找该类,实例化该类,然后使用该新创建的选择器对该新创建的对象调用一个方法。您在代码中的任何位置都没有明确命名和实例化该对象,但无论如何您都可以使用它。您可以从代码之外的任何地方获取该类名称和选择器名称,甚至可以从某处服务器的某些数据中获取。你怎么知道哪个类不会被使用?因此,没有任何工具能够执行您的请求。
【讨论】:
使用类名搜索项目可能是一种选择,但认为这可能不是最佳解决方案。特别是当你有很多课程时可能会很耗时。
【讨论】: