iOS 不定參數 av_list

http://blog.csdn.net/grozy_sun/article/details/27634575?utm_source=tuicool



仍然需要使用C標準庫中的av_list

- (void)viewDidLoad {

    [superviewDidLoad];


    //http://blog.csdn.net/grozy_sun/article/details/27634575?utm_source=tuicool

    [selflist:@"123",@"456",nil];

    

    [selfstrFormat:@"123~~%@",@"124"];

}




- (void)strFormat:(NSString *)format,...{

   va_list args;

   va_start(args, format);

   NSString *message = [[NSStringalloc]initWithFormat:formatarguments:args];

   va_end(args);

    

   NSLog(@"%@",message);

}



- (void)list:(NSString *)string,...{

    //定義一個指向個數可變的參數列表指針

    va_list args ; // typedef char* va_list;

    

    //args(列表指針)進行初始化,它指向可變參數表裏面的第一個參數\

    第一個參數是args本身,第二個參數是在變參表前面緊挨着的一個變量,“...”之前的那個參數;

    va_start(args, string);

    if (string) {

        NSString *otherString ;

        NSLog(@"%@",string); //輸出第一個字符串

        while (1) {

            //va_arg: 第二個參數是獲取了類型。然後返回這個指定類型的值

            //並把args的位置指向變參表的下一個變量位置

            otherString = va_arg(args, NSString *);

            if (otherString == nil) {

                break;

            }else{

                NSLog(@"%@",otherString);

            }

        }

    }

    //va_end(arg_ptr):清空參數列表,並置參數指針arg_ptr無效

    //獲取完成後,需要將指針關掉,以避免發生危險

    va_end(args);

}




2015-09-29 08:50:37.208多參傳入[912:31285] 123

2015-09-29 08:50:37.208多參傳入[912:31285] 456

2015-09-29 08:50:37.209多參傳入[912:31285] 123~~124


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章