iOS学习笔记(5)形参个数可变的方法
2014-07-17 10:43
176 查看
如果在定义方法时,在最后一个形参明后增加逗号和三点(,...),则表明该形参可以接受多个参数值。
为了在程序中获取个数可变的形参,需要使用如下关键字
· va_list:这是一个类型,用于定义指向可变参数列表的指针变量
· va_start:这是一个函数,该函数指定开始处理可变形参的列表,并让指针变量指向可变形参列表的第一个参数
· va_end:结束处理可变形参,释放指针变量
· va_arg:该函数返回获取指针当前指向的参数的值,并将指针移动到指向下一个参数
例子
Varargs.h
Varargs.m
main函数
注意:个数可变的形参只能处于形参列表的最后。一个方法中最多之恩给你保吉安一个长度可变的形参。
引自《疯狂iOS讲义(上)》
为了在程序中获取个数可变的形参,需要使用如下关键字
· va_list:这是一个类型,用于定义指向可变参数列表的指针变量
· va_start:这是一个函数,该函数指定开始处理可变形参的列表,并让指针变量指向可变形参列表的第一个参数
· va_end:结束处理可变形参,释放指针变量
· va_arg:该函数返回获取指针当前指向的参数的值,并将指针移动到指向下一个参数
例子
Varargs.h
#import <Foundation/Foundation.h> @interface Varargs : NSObject //定义形参个数可变的方法 -(void)test:(NSString *)name,...; @end
Varargs.m
#import "Varargs.h" @implementation Varargs -(void)test:(NSString *)name,... { // 使用va_list定义一个argList指针变量,该指针变量指向可变参数列表 va_list argList; // 如果为第一个name参数存在,才需要处理后面的参数 if (name) { // 由于name参数并不在可变参数列表中,因此先处理name参数 NSLog(@"%@" , name); // 让argList指向第一个可变参数列表的第一个参数,开始提取可变参数列表的参数 va_start(argList, name); // va_arg用于提取argList指针当前指向的参数,并将指针移动到指向下一个参数 // arg变量用于保存当前获取的参数,如果该参数不为nil,进入循环体 NSString* arg = va_arg(argList, id); while (arg) { // 打印出每一个参数. NSLog(@"%@",arg); // 再次提取下一个参数,并将指针移动到指向下一个参数 arg = va_arg(argList, id); } // 释放argList指针,结束提取 va_end(argList); } } @end
main函数
int main(int argc, const char * argv[]) { @autoreleasepool { Varargs* va = [[Varargs alloc] init]; [va test:@"疯狂iOS讲义" , @"疯狂Android讲义", @"疯狂Ajax讲义" , nil]; } return 0; }
注意:个数可变的形参只能处于形参列表的最后。一个方法中最多之恩给你保吉安一个长度可变的形参。
引自《疯狂iOS讲义(上)》
相关文章推荐
- 《疯狂Java讲义(第三版)》学习笔记之 —— 形参个数可变的方法
- IOS学习笔记之属性方法的选择
- IOS学习笔记之属性方法的选择
- 方法定制iOS学习笔记8-UITableView的定制
- IOS学习笔记56-IOS7状态栏适配方法一
- IOS学习笔记56-IOS7状态栏适配方法一
- IOS学习笔记56-IOS7状态栏适配方法一
- 『iOS学习笔记』 - 变量 属性 方法 实现
- IOS学习笔记—Objective C—类、属性、方法 .
- IOS学习笔记56-IOS7状态栏适配方法一
- ios学习笔记之字典(NSDictionary)对象相应方法的用途
- Java学习笔记003——继承、抽象类、类相等测试、泛型数组列表、可变参数方法
- IOS学习笔记56-IOS7状态栏适配方法一
- IOS学习笔记 ­­­­­­— UITextField 输入完毕关闭键盘方法
- IOS学习笔记2—Objective C—类、属性、方法
- iOS学习笔记17—NSFileHandle 诸多方法理解
- IOS学习笔记之属性方法的选择
- IOS学习笔记56-IOS7状态栏适配方法一
- IOS学习笔记56-IOS7状态栏适配方法 (一)
- IOS学习笔记(12)Storyboards使用方法