objective-c中的实用方法

时间:2010-04-26 21:41:19

标签: objective-c

我应该将实用程序方法放在objective-c?

E.g。其他路径处理实用程序方法,由多个类调用。

我已经看到了将它们放在主appdelegate文件中的示例,因此可供所有人使用。然而,这对我来说似乎有点奇怪......

2 个答案:

答案 0 :(得分:6)

您有几个选择:

  • 最简单的方法是为常见任务提供一组C函数(如果使用.m扩展名,则可以在C函数中使用Objective-C对象)。例如,您可以从代码中调用showAlertDialog()
  • 您可以拥有一个“实用程序类”,其中包含一组导入到每个文件的类方法。例如,您可以致电+[MyUtilities showAlertDialog]。这是Java中静态实用程序类的最直接等价物,但它在Objective-C中有点笨拙。
  • 正如Paul Lynch所说,另一个选择是使用类别来扩展公共类。唯一的问题是它可能导致可维护性问题。它也只适用于扩展已存在的类,并且只在您不需要访问ivars时才有效。您可以使用NSObject的类别来使所有对象都可以访问这些方法,但我强烈建议不要这样做(这可能导致严重的可维护性问题)。

就个人而言,我使用了选项1和3的混合。当我的功能明显与特定的现有类绑定时,我使用类别。否则,我使用C函数。

答案 1 :(得分:1)

是的,这很奇怪(和不好的做法)。

可能最常用的习惯是使用类别来扩展现有的系统类。在少数情况下,如果没有适合的系统类,有些可能会创建一个主要由类方法组成的实用程序类,或者一个包含实例方法的单例类。

这取决于方法以及它们适合整个应用程序结构的位置(并且总是支持MVC)。