Objective C默认参数?

Bri*_*tow 38 parameters function objective-c default-value

可能重复:
Objective-C 2.0中的可选参数?
Objective-C默认参数值

我正在Objective C中编写一个C函数.我想要一个我最后一个参数的默认值.

我试过了:

foo(int a, int b, int c = 0);
Run Code Online (Sandbox Code Playgroud)

但那是C++

我也试过了

foo(int a, int b, int c)
{
    ...
}

foo(int a, int b)
{
   foo(a, b, 0);
}
Run Code Online (Sandbox Code Playgroud)

但这也是C++.

有没有办法在Objective C中做到这一点?

ken*_*ytm 103

ObjC中没有默认参数.

您可以创建2个方法:

-(void)fooWithA:(int)a b:(int)b c:(int)c {
  ...
}
-(void)fooWithA:(int)a b:(int)b {
  [self fooWithA:a b:b c:0];
}
Run Code Online (Sandbox Code Playgroud)

对于C:使用ObjC没有为C子集添加任何特殊内容.任何无法在纯C中完成的事情都无法通过在ObjC中编译来完成.这意味着,您不能拥有默认参数,也不能重载函数.改为创建2个函数.

  • +1这是正确的方式.:)同样如果你真的需要一个C函数:使用不同的名称. (5认同)
  • 上帝保佑!!!让它成为 Objective-C++,你将永远承受 C++ 的诅咒。例如,您不能将二进制文件部署给其他人,因为他们需要以与您完全相同的方式编译自己的代码。相同的编译器、运行时库和设置。C++ 没有标准/一致的 ABI。OBJ-C 是“纯 C”的最强有力的原因——是拥有一个“永远兼容”的二进制文件,可以在任何地方运行。只有在需要从 Obj-C 接口 C++ 代码时才使用 Obj-C++。当然不是为了保存一些简单易懂的代码行。如果你完全是为了优雅 - 改用 Swift(并享受与 C++ 相同的危险) (2认同)

Vla*_*mir 6

不,objective-c 不支持默认参数。看到类似的问题