Objective-C中一個方法如何傳遞多個參數的理解


原來如此

Objective-C語法中多參數傳遞方法經常是初學者最容易犯困的地方。我自己也是剛剛悟出來與大家分享.

分析

由於我們已有的語言經驗告訴我們定義方法都是:

    一個類型匹配一個參數(動態語言甚至可以忽略類型) 

例如:

1. C/C++ public void say(char* word1,char* word2) 2. JAVA public void say(String word1,String word2) 3. C#(跟Java一模一樣) public void say(String word1,String word2) 4. VB Public function fun1(word1 as string,word2 as string) as string 5. JS是一個動態語言不需要類型所以只需要定義參數即可 function say(word1,word2) 6. Php function say($word1,$word2) 7. Python(動態語言不需要類型,類似JS) def say(word1,word2) 8. ActionScript(動態語言不需要參數) function say(word1,word2) 9. Perl (好奇心起把這個也找出來了) sub say{ ($word1,$word2) = @_ //@_代表參數名稱 } 

Objective-C

而Objective-C是怎么定義的呢?

    -(void) setWord1:(NSString *) word1 setWord2:(NSString *) word2 中文語法解釋是這樣的: (方法的數據返回類型) 方法名: (參數1數據類型) 參數1的變量名 參數2名稱: (參數2數據類型) 參數2的變量名 …. 我們先看"參數2名稱:(參數2的數據類型) 參數2的變量名"。 *關鍵點: 方法名等於名稱1 看到這里你明白了嗎? 

結論

OC的函數的一個參數是由3個部分組成的,第一個參數的名稱默認為方法名。你如果把它當作是參數名稱你就會發現,這是一個多么有愛的"一家三口"啊。但為啥這樣定義呢?因為OC中調用方法是這樣的: [obj setWord1: "參數1值", setWord2: "參數2值" ] [對象 方法名: 參數1值, 參數2的名稱: 參數2值] 

這就是OC的函數參數定義是如此2的原因了.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM