2012-05-17 29 views
1

在斯坦福CS193P分配2當然它說我必須添加runProgram類方法具有以下簽名:新手IOS類方法

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

但是我不承認或不知道如何使用這個語法直到現在方法已經寫得更簡單:

+ (double)performOperation:(NSString *)operation 

有人可以解釋這個簽名? 該方法應該寫在一行上嗎? 如何獲取/設置我的字典?

對不起,基本的問題,但我是一個完整的初學者!

回答

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

是一樣:

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

它是兩條線,方便閱讀格式化。

在此聲明,您的選擇是:runProgram:usingVariableValues:,和冒號後與他們的類型參數的名稱,即idprogramNSDictionary *variableValues

你把它用

[ClassName runProgram:myProgram usingVariableValues:myVariables]; 

要創建一個字典,你可以使用這樣的代碼:

NSDictionary *myDict = [NSDictionary dictionaryWithObjectsAndKeys:@"value1", 
         @"key1", @"value2", @"key2", nil]; 
0

應該是在一行的可讀性:

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

用法就像您所期望的那樣:

[MyCustomClass runProgram:myProgram usingVariableValues:myDictionary]; 
0

類方法沒有任何新的方法,在這裏基本區別 - 1.在方法的簽名 2.無障礙代替類對象通過類名

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

是相同 -

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

雖然調用此方法 -

[ClassName runProgram:someProgram usingVariableValues:someVar]; 

或格式化方式 -

[ClassName runProgram:someProgram 
    usingVariableValues:someVar]; 
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