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

简介: 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 <Foundation/Foundation.h>

#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);

   }

}

@end


main.m


#import <UIKit/UIKit.h>

#import "AppDelegate.h"

#import "Person.h"

#import "Apple.h"

#import "User.h"

#import "Args.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

 

相关文章
|
自然语言处理 开发工具 Swift
移动用户反馈-iOS接入指南 | 学习笔记
快速学习移动用户反馈-iOS接入指南
移动用户反馈-iOS接入指南 | 学习笔记
|
小程序 前端开发 Shell
接入 mPaaS 小程序并实现启动 iOS 版| 学习笔记
快速学习接入 mPaaS 小程序并实现启动 iOS 版。
接入 mPaaS 小程序并实现启动 iOS 版| 学习笔记
|
移动开发 小程序 前端开发
iOS 端自定义开发(二)| 学习笔记
快速学习 iOS 端自定义开发。
iOS 端自定义开发(二)| 学习笔记
|
移动开发 JSON 小程序
iOS 端自定义开发(一)| 学习笔记
快速学习 iOS 端自定义开发。
iOS 端自定义开发(一)| 学习笔记
|
小程序 IDE API
iOS 端预览和调试小程序| 学习笔记
快速学习 iOS 端预览和调试小程序。
iOS 端预览和调试小程序| 学习笔记
|
小程序 Shell 开发工具
接入 mpaas 小程序并实现启动 IOS 版|学习笔记
快速学习接入 mpaas 小程序并实现启动 IOS 版
248 0
接入 mpaas 小程序并实现启动 IOS 版|学习笔记
|
移动开发 JSON 小程序
iOS 端自定义开发(一)|学习笔记
快速学习iOS 端自定义开发(一)
189 0
iOS 端自定义开发(一)|学习笔记
|
小程序 IDE API
IOS 端预览和调试小程序|学习笔记
快速学习 IOS 端预览和调试小程序
169 0
IOS 端预览和调试小程序|学习笔记
|
API 开发工具 iOS开发
iOS 接入指南|学习笔记
快速学习 iOS 接入指南|
238 0
iOS 接入指南|学习笔记
|
测试技术 数据安全/隐私保护 Android开发
提交 iOS 测试任务|学习笔记
快速学习 提交 iOS 测试任务
提交 iOS 测试任务|学习笔记