【发布时间】:2013-01-17 10:22:27
【问题描述】:
我声明了一个带有一些函数和一些方法的接口。而不是声明:-(void)foo;+(void)bar;
我声明:-(void)foo;void bar();
我觉得还好。编译器认为没问题。其他程序员也觉得没问题吗?
【问题讨论】:
我声明了一个带有一些函数和一些方法的接口。而不是声明:-(void)foo;+(void)bar;
我声明:-(void)foo;void bar();
我觉得还好。编译器认为没问题。其他程序员也觉得没问题吗?
【问题讨论】:
选择 C 函数或静态方法时的顾虑:(从我的头顶)
xxxUtils 类)。否则使用 C 函数。 __attribute__((overloadable)) 标记时可以重载C 函数。【讨论】:
我不太明白问题的重点。您可以类似地一起声明它们:
-(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 的回答似乎非常详尽。
【讨论】:
static。
这只是USED-TO的问题。
我会选择 Objective-C 风格的方法,除非我需要一些仅在 C 中可用的函数,例如 pow()。
即使你想添加一个C方法,我觉得它应该在一个单独的文件中,如AllCMethods.c这样会更容易回忆,记住,使用所有obj-c方法和C方法。
【讨论】: