小糖出品:对方法的补充(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中创建对象调用该方法了,如下
运行结果如下
这样我们就可以实现传入多个参数了。
其实,小糖觉得,整个过程主要是那几个关键字的使用不怎么好理解,其他嘛,都是很好理解的。具体感受,那得看个人咯。
好了,对方法的补充暂时先讲到这里,下一篇博客小糖会继续对方法进行补充的,希望大家能继续关注哦。
- 小糖出品:对方法的补充(1)
- 小糖出品:对方法的补充(2)
- 小糖出品:方法的定义与实现
- 对自定义View的小补充 -- 其构造方法调用的时间
- 小糖出品:类的定义与对象的创建
- 小糖出品:类与对象的概念
- 小糖出品:关于id、self、super的解释
- 小糖出品:oc中点语法的使用
- 二叉排序树关于删除节点的方法(对上一博客的补充)
- 对MPlayer的补充
- 对web的补充
- iOS常见又通用的一些小方法集合(不定时更新,欢迎补充)
- 学习笔记3(对js中字符串方法的补充)
- 小糖出品:面向过程与面向对象二者的区别
- 小糖出品:oc中#import和#include之间的区别
- 【小李木耳】出品:图说一个老板的发家史! 2011年3月1日
- Word 2007 操作小方法(持续补充)
- cocos2d-x系列笔记(4.1)---对<会动的小精灵>博文的补充
- 字典转模型的例子
- Fields in python
- 《超体》观后感
- Android中的事件传递和消费机制
- CodeForces 542D. Superhero's Job 暴力数论
- 小糖出品:对方法的补充(1)
- BASH
- CodeIgniter的一些实践
- Contains Duplicate II
- 关联android源码
- UIScrollView详解
- Struts2 笔记总结
- 大话23种设计模式
- USACO--3.3Home on the Range+DP