我有一个班级(比如A班,有A.h和A.m文件)。这个类需要一个实用程序类,我懒得创建Utility.h和Utility.m
有没有办法在A.m中包含它的定义(实现)?创建声明(界面)是否不可避免?
在这种情况下,最佳做法是什么?
答案 0 :(得分:6)
当然有一种方法:只需将实现添加到文件中。编译器并不关心实现的位置,只要它具有所有相关的声明即可。它是链接器的工作,用于理清目标代码的实际位置。
不,你不能避免创建一个定义。因此,在其他代码需要的地方创建它。如果只需要A类的辅助类,那么您也应该更喜欢将接口声明放入实现文件中。
答案 1 :(得分:1)
您可以在类@implementation
中添加方法,而无需在界面中声明它们。甚至不在私人A ()
类别中。编译器会抱怨缺少选择器,除非你对它的第一次使用之前的所有方法(源代码顺序)都足够小心。
因此,从技术上讲,您可以避免接口声明。
您还有一些其他选择,不需要使用其文件对创建新类以及选择新类名的巨大效果:
A (Utils)
A (Utils)
在所有这些情况下,您需要编写几乎相同的代码。我更喜欢选项2,然后在其他地方需要方法时将类别提取到实际文件甚至是不同的类。