Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何从项目中查找和删除未使用的类文件_Objective C_Cocoa Touch_Cocoa_Class_Xcode3.2 - Fatal编程技术网

Objective c 如何从项目中查找和删除未使用的类文件

Objective c 如何从项目中查找和删除未使用的类文件,objective-c,cocoa-touch,cocoa,class,xcode3.2,Objective C,Cocoa Touch,Cocoa,Class,Xcode3.2,我的XCode项目有所增长,我知道其中有些类文件不再被使用。有没有一种简单的方法可以找到所有这些并删除它们?用类名搜索项目可能是一种选择,尽管这可能不是最好的解决方案。特别是,当您有许多类时,这可能会很耗时。如果类文件只是放在项目中,而不是目标的一部分,只需在树状视图中单击项目本身,就可以看到表中的所有文件。确保在表视图中看到“Target”列,遍历目标并查找没有任何检查的文件->它们不再编译 但是如果您仍然编译这些类,并且不再使用它们,那么这种情况就有点困难了。查看此项目 http://www

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

用类名搜索项目可能是一种选择,尽管这可能不是最好的解决方案。特别是,当您有许多类时,这可能会很耗时。

如果类文件只是放在项目中,而不是目标的一部分,只需在树状视图中单击项目本身,就可以看到表中的所有文件。确保在表视图中看到“Target”列,遍历目标并查找没有任何检查的文件->它们不再编译

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

http://www.karppinen.fi/analysistool/#dependency-图表

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


编辑:链接已经死了,但是似乎仍然有Objy-C依赖图的项目,例如

< P>如果它们是C或C++符号,那么你可以让链接器为你做工作。
如果要删除objc符号,请尝试重构类名(例如重命名该类),并预览它显示的依赖项。如果您通过字符串引用类/选择器等,则。。。它可能没有那么有效。不幸的是,您通常还必须手动测试,以验证删除类不会破坏任何东西。请记住,资源(如XIB)也可能引用/加载objc类。

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


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

目标列可能会误导您,因为它只考虑活动目标。如果该类未在活动目标中使用,但在另一个目标中使用,则即使正在使用,目标列也不会有复选标记。这就是为什么我建议尝试查找没有在任何目标中进行签入的文件。当然,如果你有很多目标,这将不会有多大乐趣。。