2014-07-10 46 views
-1

Objective-C的方法有參數,可以和除了第一個每個PARAM有兩個名字:叫名和變量名稱,例如:Objective-C params中「call name」的用法是什麼?

-SomeMessage:(type)varName callName2:(type)varName2 

那麼,有什麼用callName的?爲什麼我們需要兩個參數的名字?

+0

emmm ...那些不是_two_名稱,這是一個方法的接口,在你的例子中方法的頭部是'-SomeMessage:callName2:',varName和'varName2'是方法範圍內的局部變量名稱。請參閱更多關於該語言的基礎知識:https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/WorkingwithObjects/WorkingwithObjects.html#//apple_ref/doc/uid/TP40011210-CH4-SW1 – holex

回答

1

讓我們有更好的方法,例如:

- dataForKey:(NSString *)key withEncoding:(NSString *)encoding; 

第一個名字,你怎麼稱呼它,實際上是方法名稱的一部分,整個方法的名稱是:

- dataForKey:withEncoding: 

(包括冒號)。

Obj-C喜歡可以像讀句子一樣閱讀的方法名稱。這在調用者的情況下很有用。在如Java或C++語言的方法將被稱爲像這樣

data = object.getData("key", "ASCII") 

這是很難理解的讀者,因爲他們不知道的參數代表什麼。在Obj-C中

data = [object dataForKey:@"key" withEncoding:@"ASCII"]; 

很容易理解,無需查看方法聲明。

+0

的描述,IDE會幫助我們,只要將鼠標移動到功能上,一個提示就會顯示出來。 – lovespring

+0

@lovespring當你試圖理解代碼時,這仍然會讓你放慢速度。 – Sulthan

+0

我們可以使用命名參數按照自由度順序嗎?在C++/java中,我們必須遵循函數聲明的順序。 – lovespring

-1

這是它的工作原理你寫的是正確的「Somemessage」和「callName2」是方法名稱的一部分,而varName和varName2是變量。

callname2是可選的,通常它被使用,如果我們想給因爲我們是

希望這有助於你以後寫變量的任何定義。

+0

我說的實際上它是參數 – Mini

1

它使你的代碼更易讀,每個「呼名」是一個參數的說明

因此而不是C風格爲myMethod(5, 4, 9, 2)

你會[self myMethodWithParam:5 andACoolNumber:4 thisShouldBeNine:9 divisor:2];

它只是幫助你瞭解函數參數需要什麼,它的可選,但你應該始終這樣做,以幫助代碼維護性

相關問題