【问题标题】:What's the easiest way of implementing own functions that are used all over the place in an large project?实现在大型项目中到处使用的自己的功能的最简单方法是什么?
【发布时间】:2009-05-20 13:02:33
【问题描述】:
我想创建一组功能,让生活更轻松。我在大约 60% 的项目文件中使用它们。我想知道在项目中包含这些最有效的方法是什么。
我考虑在它们所在的位置创建一个文件,并将该文件包含在我需要它们的每个文件中。另一方面,如果我能在显眼的地方只包含一次,那就太酷了,这样在整个项目中都可以使用。但我不知道那可能是什么地方。我不确定,但我认为这是不可能的。还是我对这个假设有误?
【问题讨论】:
标签:
iphone
objective-c
cocoa-touch
【解决方案1】:
我认为您更多地询问的是类设计以及如何构建 API,而不是如何将定义包含到其他 .m 文件中。
如果是这样的话,大致有三种选择:
- 向您的应用委托添加一些内容 - 这是存储控制整个模型或应用本身的系统范围功能的好地方。
- 创建一个signleton 类来保存您的方法。实际的单例或仅具有类方法的类(即使用前导
+ 而不是 - 声明)
- 通过将类别添加到系统类。
我认为,一般来说,您不想为所有实用方法做出单一决定 - 您应该根据具体情况采用每种方法(或方法组)并做正确的事情。例如,如果您有一个显示您自己的错误对话框样式的方法,您可以将它放在 AppDelegate 上。如果您有一种将字符串翻译成法语的方法,您可以将其添加为 NSString 类别。
一般来说,类别在这里是您的朋友 - 它们可以封装在单个 .h 和 .m 中,以便它们易于在项目中移动,而且它们的可访问性遵循目标类。
如果你不应该考虑实现一个单例。请参阅 Matt Gallager 的 discussion 了解如何做到这一点。
最后,如果确实是正确的决定,请扩展您的 AppDelegate - 可能带有一个类别 ;-)
【解决方案2】:
您在 xcode 项目中拥有的 prefix.pch 文件用于添加您在项目的所有/几乎所有类中需要的所有导入语句。
UIKit 和 Foundation 导入都写在这个文件中。
因此,只需将您的导入语句添加到此文件中即可。您可以在 Groups & Files 的 Other Sources 文件夹中找到它
【解决方案3】:
我认为您可以在 ProjectName_Prefix.pch 中包含您的标题。