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

tig*_*ero 9 objective-c ios

可能重复:
Objective-C默认参数值

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

And*_*sen 31

这在Objective-C中是不可能的.一种选择是做这样的事情来获得相同的功能:

- (void)someMethodThatTakesAString:(NSString *)string
{
    if (string == nil) string = @"Default Value";

    // Use string
}
Run Code Online (Sandbox Code Playgroud)

如果您正在寻找完全省略参数的能力,那么在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
}
Run Code Online (Sandbox Code Playgroud)

然后,如果你想只用默认参数做一些事情,你可以打电话-doSomething.如果你想设置optionA,但不关心optionB,你可以打电话-doSomethingWithOptionA:等.

最后,值得注意的是,您可以使用C++为iOS编写,也可以使用Objective-C++混合使用Objective-C和C++.所有这一切,始终要仔细考虑如何在您正在使用的环境中做最好的事情.不要试图强迫C++习语和模式到Objective-C和Cocoa上.他们是不同的,他们的意思是那样.在转换到编写Objective-C代码时,通常很容易发现没有放弃C++约定的C++程序员,这通常不是一件好事.