【问题标题】:Recommended way to create small utility classes in Objective C在 Objective C 中创建小型实用程序类的推荐方法
【发布时间】:2011-10-19 15:07:35
【问题描述】:

我有一个班级(比如 A 级,有 A.h 和 A.m 文件)。这个类需要一个utility类,我懒得创建Utility.h和Utility.m

有没有办法在 A.m 中包含它的定义(实现)?是否不可避免地要创建它的声明(接口)?

在这种情况下,最佳做法是什么?

【问题讨论】:

    标签: objective-c cocoa-touch cocoa


    【解决方案1】:

    当然有一种方法:只需将实现添加到文件中即可。编译器并不关心你的实现在哪里,只要它手头有所有相关的声明。链接器的工作是找出目标代码的实际位置。

    不,你不能避免创建一个定义。因此,在其他代码需要它的地方创建它。如果您只需要 A 类的辅助类,那么您应该更愿意将接口声明也放入实现文件中。

    【讨论】:

      【解决方案2】:

      您可以向@implementation 类添加方法,而无需在接口中声明它们。甚至不在私人A () 类别中。编译器会抱怨缺少选择器,除非您在第一次使用之前(按源代码顺序)对所有方法足够小心。

      所以,技术上是的,您可以避免接口声明。

      你有一些额外的选择,不需要创建一个新类及其文件对,也不需要花费巨大的精力来选择一个新的类名:

      1. 在相同的 A.h/m 文件中创建一个类别 A (Utils)
      2. 仅在上午创建类别A (Utils)(编码速度稍快)
      3. 在 A.h/m 中创建纯 C 函数

      在所有这些情况下,您都需要编写几乎相同的代码。我更喜欢选项 2,然后在其他地方需要方法时将类别提取到实际文件甚至是不同的类。

      【讨论】:

      • 我认为选项 2 不错,但总是会在单独的文件中创建它。如果您想对实用程序函数进行单元测试,如果您的 main (A.m) 包含许多其他依赖项,则可能很难创建测试类。
      猜你喜欢
      • 1970-01-01
      • 2012-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多