天天看点

IOS之学习笔记六(可变形参)

1、实现函数的可变形参

1)、va_list:这是一个可变类型,用于定义指向可变参数列表的指针变量

2)、va_start:让argList指向一个可变参数列表的第一个参数

3)、提取argList当前指针指向的参数,并且将指针指向下一个参数

4)、释放argList指针,结束提取

2、测试代码

Args.h

#ifndef Args_h

#define Args_h

#import <Foundation/Foundation.h>

@interface Args : NSObject

-(void)test:(id)name, ...;

@end

#endif /* Args_h */

Args.m

#import "Args.h"

@implementation Args

-(void)test:(id)name, ...

{

   //va_list:这是一个可变类型,用于定义指向可变参数列表的指针变量

   va_list argList;

   if (name)

   {

       NSLog(@"%@", name);

       //va_start:让argList指向一个可变参数列表的第一个参数

       va_start(argList, name);

       //提取argList当前指针指向的参数,并且将指针指向下一个参数

       NSString *arg = va_arg(argList, id);

       while (arg)

       {

           NSLog(@"%@", arg);

           arg = va_arg(argList, id);

       }

       //释放argList指针,结束提取

       va_end(argList);

   }

}

main.m

#import <UIKit/UIKit.h>

#import "AppDelegate.h"

#import "Person.h"

#import "Apple.h"

#import "User.h"

#import "KVCPerson.h"

int main(int argc, char * argv[]) {

   @autoreleasepool {

       Args *arg = [Args new];

       [arg test:@"chenyu", @"chenxuan", @"chencaifeng", nil];

3、运行结果

chenyu

chenxuan

chencaifeng