我声明了一个带有一些函数和一些方法的接口。而不是声明:
-(void)foo;
+(void)bar;
我声明:
-(void)foo;
void bar();
我认为这很好。编译器认为没问题。其他程序员也觉得没问题吗?
我声明了一个带有一些函数和一些方法的接口。而不是声明:
-(void)foo;
+(void)bar;
我声明:
-(void)foo;
void bar();
我认为这很好。编译器认为没问题。其他程序员也觉得没问题吗?
选择 C 函数或静态方法时的担忧:(从我的头顶)
xxxUtils
类)的垃圾转储。否则使用 C 函数。__attribute__((overloadable))
。我不太明白问题的重点。您可以类似地一起声明它们:
-(void)foo;
+(void) bar;
void bar();
所有在目标 C 中都是合法的,并且可以以相同的名称共存,因为它们是不同的实体(实例方法、类方法、C 函数)。您可以void bar()
毫无问题地从前者调用,但不是 v/v,因为 void bar() 没有传递对self
.
如果问题是风格问题,我会将 C 函数与 @interface 分开声明,因为它们不是 Objective-C。
对于 Clang 的最新版本,如果它们不供公众使用,则根本不需要声明它们......
更新
阅读了@Jano 的答案后,我现在更了解了问题的重点:为什么选择一个类方法而不是一个可以实现相同结果的函数(两者都无法访问self
)。这些天来,我倾向于总是使用类方法,它似乎在 obj-C 上下文中才有意义。Jano 的回答似乎非常详尽。
这只是USED-TO的问题。
我会选择 Objective-C 风格的方法,除非我需要一些仅在 C 中可用的函数,例如 pow()。
即使你想添加一个 C 方法,我觉得它应该在一个单独的文件中,因为AllCMethods.c
它会更容易回忆,记住,使用所有 obj-c 方法和 C 方法。