1

在斯坦福 CS193P 课程的作业 2 中,它指出我必须添加一个带有以下签名的 runProgram 类方法:

+ (double)runProgram:(id)program
usingVariableValues:(NSDictionary *)variableValues;

但是,我不认识或不知道如何使用这种语法,因为到目前为止,方法已经写得更简单了:

+ (double)performOperation:(NSString *)operation

有人可以解释这个签名吗?方法应该写在一行上吗?如何获取/设置我的字典?

对不起,基本问题,但我是一个完整的初学者!

4

4 回答 4

1
+ (double)runProgram:(id)program
 usingVariableValues:(NSDictionary *)variableValues;

是相同的:

+ (double)runProgram:(id)program usingVariableValues:(NSDictionary *)variableValues;

它被格式化为两行以便于阅读。

在此声明中,您的选择器是: runProgram:usingVariableValues:,冒号后面是参数名称及其类型,即programtypeidvariableValuestype NSDictionary *

你用它来称呼它

[ClassName runProgram:myProgram usingVariableValues:myVariables];

要创建字典,请使用如下代码:

NSDictionary *myDict = [NSDictionary dictionaryWithObjectsAndKeys:@"value1",
                        @"key1", @"value2", @"key2", nil];
于 2012-05-17T08:48:16.707 回答
0
+ (double)runProgram:(id)program usingVariableValues:(NSDictionary *)variableValues;

只是一种采用两个参数的方法,一个是 id 类型,一个是字典。在 Objective-C 中,参数被交错到选择器中。所以要调用这个方法,你会做

[MyClass runProgram: aProgram usingVariableValues: aDictionary];

aDictionary 是您在调用该方法之前需要构建的字典。最简单的方法是创建一个可变字典并逐个添加项目。

NSMutableDictionary* aDictionary = [[NSMutableDictionary alloc] init];
[aDictionary setObject: @"foo" forKey: @"bar"];
[aDictionary setObject: @"baz" forKey: @"fizz"];
// etc
于 2012-05-17T09:20:52.363 回答
0

类方法不是任何新方法,这里的基本区别 - 1. 在方法的签名中 2. 可以通过 ClassName 而不是 Class Object 访问

+ (double)runProgram:(id)program usingVariableValues:(NSDictionary *)variableValues;

与 -

+ (double)runProgram:(id)program
 usingVariableValues:(NSDictionary *)variableValues;

调用此方法时-

[ClassName runProgram:someProgram usingVariableValues:someVar];

或以格式化方式 -

[ClassName runProgram:someProgram 
  usingVariableValues:someVar];
于 2012-05-17T08:50:42.273 回答
0

为了便于阅读,应该放在一行上:

+ (double)runProgram:(id)program usingVariableValues:(NSDictionary *)variableValues;

用法与您期望的一样:

[MyCustomClass runProgram:myProgram usingVariableValues:myDictionary];
于 2012-05-17T08:48:26.330 回答