天天看點

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