我找不到像在C ++中通常那样为ios中的函数定义默认参数的方法。在iOS中可以吗?如果没有推荐的工作?
答案 0 :(得分:30)
这在Objective-C中是不可能的。一种选择是做这样的事情来获得相同的功能:
- (void)someMethodThatTakesAString:(NSString *)string
{
if (string == nil) string = @"Default Value";
// Use string
}
如果您正在寻找完全省略参数的能力,那么在Objective-C中完成的典型方法是使多个方法具有逐步更具体的参数集:
- (void)doSomethingWithOptionA:(BOOL)optionA andOptionB:(int)optionB
{
// Do something using options to control exactly what's done
}
- (void)doSomethingWithOptionA:(BOOL)optionA
{
[self doSomethingWithOptionA:optionA andOptionB:42]; // Where 42 is the default for optionB
}
- (void)doSomething;
{
[self doSomethingWithOptionA:NO]; // NO is the default for optionA
}
然后,如果你想只用默认参数做一些事情,你可以只调用-doSomething
。如果你想设置optionA,但不关心optionB,你可以调用-doSomethingWithOptionA:
等。
最后,值得注意的是,你可以使用C ++为iOS编写,你也可以使用Objective-C ++混合使用Objective-C和C ++。所有这一切,始终要仔细考虑如何在您正在使用的环境中做最好的事情。不要试图强迫C ++习语和模式到Objective-C和Cocoa上。他们是不同的,他们的意思是那样。在转换到编写Objective-C代码时,通常很容易发现一位没有放弃C ++约定的C ++程序员,这通常不是一件好事。
答案 1 :(得分:1)
在这里查看答案:Objective-C Default Argument Value
你应该做的是定义一个方法,该方法接受所有参数,然后编写占用较少参数的便捷方法,然后转向并使用您想要的默认值调用更长的方法