2010-03-04 20 views
1

我有這個問題:基本的Objective - C這就是一直給我一些麻煩

-(id)initWithName:(NSString *)n description:(NSString *)d url:(NSString *)u { 

我真的不知道怎麼回事就在這裏,在方法initWithName傳遞n的說法這是被鑄造到一個NSString?並且正在傳遞一個參數d,該參數正在被轉換爲NSString?

那裏有字母'n'和'l'的目的是什麼?他們是否需要在其他地方定義,還是僅僅是任意的參數名稱,以幫助我們記住參數是什麼?

這是一種方法還是三種結合? 'description:'和'url'方法嗎?

對不起,這個問題是如此基本,我只是有點困惑這一個。

回答

6

這是一個名爲「initWithName:描述:URL:」一個方法,它名爲ndu,所有NSString*類型的參數。 Objective-C語法分割每個冒號的方法名稱(在Objective-C中稱爲「選擇器」),並在那裏放置相應的參數。關鍵是讓代碼更自然地閱讀。我會說ndu是爭執的名字。

您可能感興趣的Apple's The Objective-C Programming Language。它很短,但仍然設法充分描述語言及其哲學。

+2

+1「godawful names for arguments」 – 2010-03-04 04:27:45

+0

非常感謝所有的迴應,現在它變得更有意義。我真的很感激你的時間:) – Dave 2010-03-04 10:27:51

2

有時更容易在添加一些額外的空格明白:

-(id)initWithName:(NSString *)n 
     description:(NSString *)d 
       url:(NSString *)u 
{ 
    ... 

基本上,這個帶有三個參數的方法,都是NSString參數,它們分別被稱爲ndu。注意冒號是方法名稱的一部分是重要的,但參數類型和參數名稱不是名稱的一部分。方法的名稱是:

initWithName:description:url: 
2

這是一種方法。這就是objective-c如何將多個變量傳遞給方法。如果你對C更熟悉,看起來更像:initWithName(n,d,u)

但是,在objective-c中給出了關於方法調用中每個參數的更多信息。我想你會發現你會喜歡這個,因爲它可以幫助你理解每個參數的目的。