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++程序员,这通常不是一件好事.
| 归档时间: |
|
| 查看次数: |
14727 次 |
| 最近记录: |