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