如何为ios中的方法定义默认参数值?

时间:2012-03-05 22:35:30

标签: objective-c ios

  

可能重复:
  Objective-C Default Argument Value

我找不到像在C ++中通常那样为ios中的函数定义默认参数的方法。在iOS中可以吗?如果没有推荐的工作?

2 个答案:

答案 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

你应该做的是定义一个方法,该方法接受所有参数,然后编写占用较少参数的便捷方法,然后转向并使用您想要的默认值调用更长的方法

相关问题