我声明了一个带有一些函数和一些方法的接口。而不是声明:
-(void)foo;
+(void)bar;
我声明:
-(void)foo;
void bar();
我认为没关系。编译器认为没问题。其他程序员还认为没关系吗?
答案 0 :(得分:2)
选择C函数或静态方法时的担忧:(从我的头脑中)
xxxUtils
类)的垃圾转储。否则使用C函数。 __attribute__((overloadable))
标记时,C函数可能会过载。答案 1 :(得分:1)
我不太明白问题的重点。您可以同样地将它们全部声明:
-(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的回答似乎非常详尽。
答案 2 :(得分:0)
这只是USED-TO的问题。
我会选择Objective-C方法,除非我需要一些只在C中可用的函数,比如pow()。
即使你想要添加一个C方法,我觉得它应该在一个单独的文件中,如AllCMethods.c
它将更容易回忆,记住,使用所有obj-c方法和C方法。 / p>