小糖出品:对方法的补充(1)

来源:互联网 发布:vocaloid软件 编辑:程序博客网 时间:2024/05/16 09:23

                           上篇博客,小糖说到了方法的定义和实现。这篇博客小糖对上篇的内容进行一些补充。

                           上篇博客说到了定义方法时,传入的参数个数,上篇说到了传入一个参数和两个参数时的声明格式,现在小糖来说说另一种情况,传入多个参数的情况。

                           假设你有这种需求,在写一个方法的时候需要向方法中传入许多参数,而且是至少一个以上的任意个数,那么我们该怎么办呢?小糖来说说自己对定义这种方法的理解。首先,小糖先来说说方法声明部分,声明部分跟之前的有些许区别。比如我们要写一个test方法,那么声明部分的格式如下:

                                                          - (void) test:(NSString *) name,...;

在test方法中,我们声明了一个NSString *的形参,这个形参除了可以传name之外,还可以传其他参数,需要说明的是,要定义可传多个形参的方法,需要在定义方法的同时,在最后一个形参名后增加逗号和三点(,...),这样说明了该形参可以接受多个参数值。需要注意的是,这样定义出方法只能传入多个相同类型的参数,无法传入参数类型不同的参数,所以在用的时候需要注意下。

                           在进行方法实现之前,小糖需要说明几个关键字的作用,只有使用这几个关键字,才能实现该方法。首先来讲第一个关键字:

                          va_list,这东西是什么呢?这个东西其实是一个类型,就好比如NSString 、int 、float一样,它是用来定义指向可变参数列表的指针变量,什么意思呢?就是定义了一个指针,这个指针指向了你在test:后面传入的形参的列表,其实就是将所有传入的形参弄成一个列表,然后让该指针指过去的意思。

                          接下来是第二个关键字:va_start,这又是什么东西呢?这个东西跟第一个va_list就不一样了,其实我们可以从名字看出来的,就像第一个中的list一样,start其实就是表示开始的意思,va_start其实是一个函数,这个函数指定一个需要处理的可变形参的列表,并且让指针变量指向可变形参列表的第一个参数。

                          接下来说的是va_end,顾名思义,就是结束的函数,结束处理可变形参,释放指针。

                          最后一个关键字是va_arg,这个也是一个函数,它的作用就是返回获取指针当前指向的参数的值,并将指针移动到下一个参数。

                          说了这么多,我们还是得用例子来理解。比如说,我想在某个类中定义一个可变参数的方法,该怎么声明呢?

     

像上面一段代码一样,我们声明了一个test方法,而且该方法是形参个数可变的方法。该方法的实现部分如下:


利用上面介绍的几个关键字来实现该方法,接下来就可以在main中创建对象调用该方法了,如下

运行结果如下

这样我们就可以实现传入多个参数了。

                        其实,小糖觉得,整个过程主要是那几个关键字的使用不怎么好理解,其他嘛,都是很好理解的。具体感受,那得看个人咯。

                        好了,对方法的补充暂时先讲到这里,下一篇博客小糖会继续对方法进行补充的,希望大家能继续关注哦。


0 0
原创粉丝点击