【发布时间】:2011-10-19 15:07:35
【问题描述】:
我有一个班级(比如 A 级,有 A.h 和 A.m 文件)。这个类需要一个utility类,我懒得创建Utility.h和Utility.m
有没有办法在 A.m 中包含它的定义(实现)?是否不可避免地要创建它的声明(接口)?
在这种情况下,最佳做法是什么?
【问题讨论】:
标签: objective-c cocoa-touch cocoa
我有一个班级(比如 A 级,有 A.h 和 A.m 文件)。这个类需要一个utility类,我懒得创建Utility.h和Utility.m
有没有办法在 A.m 中包含它的定义(实现)?是否不可避免地要创建它的声明(接口)?
在这种情况下,最佳做法是什么?
【问题讨论】:
标签: objective-c cocoa-touch cocoa
当然有一种方法:只需将实现添加到文件中即可。编译器并不关心你的实现在哪里,只要它手头有所有相关的声明。链接器的工作是找出目标代码的实际位置。
不,你不能避免创建一个定义。因此,在其他代码需要它的地方创建它。如果您只需要 A 类的辅助类,那么您应该更愿意将接口声明也放入实现文件中。
【讨论】:
您可以向@implementation 类添加方法,而无需在接口中声明它们。甚至不在私人A () 类别中。编译器会抱怨缺少选择器,除非您在第一次使用之前(按源代码顺序)对所有方法足够小心。
所以,技术上是的,您可以避免接口声明。
你有一些额外的选择,不需要创建一个新类及其文件对,也不需要花费巨大的精力来选择一个新的类名:
A (Utils)
A (Utils)(编码速度稍快)在所有这些情况下,您都需要编写几乎相同的代码。我更喜欢选项 2,然后在其他地方需要方法时将类别提取到实际文件甚至是不同的类。
【讨论】: