Objective-C中一个方法如何传递多个参数的理解

来源:互联网 发布:wan端口 编辑:程序博客网 时间:2024/04/29 14:37

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的原因了.

0 0
原创粉丝点击