可能重复:
Optional arguments in Objective-C 2.0?
Objective-C Default Argument Value
我正在Objective-C中编写一个C函数。我想要一个默认值作为我的上一个参数。
我试过了:
foo(int a, int b, int c = 0);
但那是C ++。
我也试过了:
foo(int a, int b, int c)
{
...
}
foo(int a, int b)
{
foo(a, b, 0);
}
但那也是 C ++。
有没有办法在Objective-C中执行此操作?
答案 0 :(得分:99)
ObjC中没有默认参数。
您可以创建两种方法:
-(void)fooWithA:(int)a b:(int)b c:(int)c {
...
}
-(void)fooWithA:(int)a b:(int)b {
[self fooWithA:a b:b c:0];
}
对于C:使用ObjC没有为C子集添加任何特殊内容。任何无法在纯C中完成的事情都无法通过在ObjC中编译来完成。这意味着,您不能拥有默认参数,也不能重载函数。改为创建2个函数。
答案 1 :(得分:4)
不,objective-c不支持默认参数。见similar question
答案 2 :(得分:2)
答案 3 :(得分:1)
对于C函数 - 没有。对于Objective C类方法 - 是的,你只需要做两个方法,其中一个是参数short,调用另一个方法。
或者您可以将源重命名为.mm和C函数神奇地变为C ++。
答案 4 :(得分:1)
您可以使用可变长度参数列表编写C函数。您可以使用“...”作为函数声明参数之一的数据类型,以指定参数列表中变量参数列表的开始位置。 (这允许您在列表开头之前有一个或多个必需参数。)
printf()是使用此工具编写的函数示例(称为varargs)。
printf(const char *restrict format, ...);
这里,第一个参数是必需的,然后可以跟随零个或多个其他参数。
如果以这种方式编写函数,它可以为缺少的参数提供默认值。