在 Objective-C 2.0 中,是否可以创建一个参数是可选的方法?也就是说,你可以有这样的方法调用:
[aFraction print];
还有这个:
[aFraction print: someParameter];
在同一个程序中。
Apple 的 Objective-C 2.0 编程语言 指南将 Obj-C 与 Python 进行了对比,似乎说这是不允许的。我还在学习,我想确定一下。如果它是可能的,那么语法是什么,因为我的第二个代码示例不起作用。
更新: 好的,我刚刚做了两个方法,都叫“print”。
标题
-(void) print;
-(void) print: (BOOL) someSetting;
实现
-(void) print {
[self print:0];
}
-(void) print: (BOOL) someSetting {
BOOL sv;
sv = someSetting;
if ( sv ) {
NSLog(@"cool stuff turned on");
}
else {
NSLog(@"cool stuff turned off");
}
}
相关的程序行
...
printParamFlag = TRUE;
// no parameter
[aCodeHolder print];
// single parameter
[aCodeHolder print:printParamFlag];
...
我不敢相信这有效。有什么理由我不应该这样做吗?
最佳答案
你可以声明多个方法:
- (void)print;
- (void)printWithParameter:(id)parameter;
- (void)printWithParameter:(id)parameter andColor:(NSColor *)color;
在实现中你可以这样做:
- (void)print {
[self printWithParameter:nil];
}
- (void)printWithParameter:(id)parameter {
[self printWithParameter:nil andColor:[NSColor blackColor]];
}
编辑:
请不要同时使用 print
和 print:
。首先,它没有指出参数是什么,其次没有人(ab)以这种方式使用Objective-C。大多数框架都有非常清晰的方法名称,这是使 Objective-C 编程如此轻松的一件事。普通的开发者是不会想到这种方法的。
还有更好的名字,例如:
- (void)printUsingBold:(BOOL)bold;
- (void)printHavingAllThatCoolStuffTurnedOn:(BOOL)coolStuff;
关于objective-c - Objective-C 2.0 中的可选参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/561185/