是否有未使用的函数我放入一个大的CoolFunctions.h / CoolFunctions.m文件,它包含在我的项目的任何地方?

时间:2009-05-20 14:46:35

标签: iphone objective-c

我想为所有很酷的函数创建一个大文件,我发现它在某种程度上是可重用和有用的,并将它们全部放入该单个文件中。嗯,一开始我没有很多,所以我猜想制作几个文件并不值得考虑。我会用pragma标记将它们视觉分开。

但问题是:这些未使用的方法会不会受到任何影响?我的应用程序会爆炸还是性能较差?或者编译器/链接器是否足够聪明,知道不需要函数A和B,因此不会将它们的“代码”复制到我生成的应用程序中?

4 个答案:

答案 0 :(得分:7)

这听起来像是一场绝对的建筑和维护噩梦。实际上,你应该永远使用一组随机的方法制作一个巨大的blob文件。将方法添加到适当的类或类别。有关blob反模式的信息,请参阅here,这是您在此处所做的。

直接回答您的问题:不,从未调用的方法不会影响您应用的效果。

答案 1 :(得分:6)

不,它们不会直接影响您的应用。但请记住,所有未使用的代码都会使您的函数文件更难以阅读和维护。此外,编写目前尚未实际使用的函数可以很容易地引入在您开始使用这些函数之后不会变得明显的错误,这可能会让您感到非常困惑,因为您已经忘记了它们我写了,并且可能会认为它们是正确的,因为你没有长时间触及它们。

此外,在像Objective-C这样的面向对象语言中,全局函数应该只用于特殊的,非常可重用的情况。在大多数情况下,您应该在类中编写方法。我的应用程序中可能有一个或两个全局函数,通常与调试有关,但通常没有别的。

所以不,它不会伤害任何东西,但我现在仍然会避开它并专注于编写你现在需要的代码。

答案 2 :(得分:2)

代码仍然会被编译并链接到项目中,它只是不会被您的代码使用,这意味着您生成的可执行文件会更大。

我可能会将函数拆分成单独的文件,具体取决于它们要处理的公共区域,因此我有一个与字符串操作函数库分开的图像函数库,然后包含与之相关的函数。手头上的项目。

答案 3 :(得分:1)

我不认为在.h文件中使用未使用的函数会以任何方式伤害到你。如果编译包含构建目标中未使用函数的所有相应.m文件,那么最终会生成比所需更大的可执行文件。如果您通过静态库包含代码也是如此。

如果您确实使用了某项功能,但未包含正确的.m文件或​​库,则会出现链接错误。