gpt4 book ai didi

objective-c - Objective-C 2.0 中的可选参数?

转载 作者:IT老高 更新时间:2023-10-28 11:34:06 25 4
gpt4 key购买 nike

在 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]];
}

编辑:

请不要同时使用 printprint:。首先,它没有指出参数是什么,其次没有人(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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com