国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

iOS學(xué)習(xí)筆記(5)形參個(gè)數(shù)可變的方法

2019-11-14 20:14:53
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  如果在定義方法時(shí),在最后一個(gè)形參明后增加逗號(hào)和三點(diǎn)(,...),則表明該形參可以接受多個(gè)參數(shù)值。

  為了在程序中獲取個(gè)數(shù)可變的形參,需要使用如下關(guān)鍵字

   · va_list:這是一個(gè)類型,用于定義指向可變參數(shù)列表的指針變量

   · va_start:這是一個(gè)函數(shù),該函數(shù)指定開(kāi)始處理可變形參的列表,并讓指針變量指向可變形參列表的第一個(gè)參數(shù)

   · va_end:結(jié)束處理可變形參,釋放指針變量

   · va_arg:該函數(shù)返回獲取指針當(dāng)前指向的參數(shù)的值,并將指針移動(dòng)到指向下一個(gè)參數(shù)

  例子

  Varargs.h

#import <Foundation/Foundation.h>@interface Varargs : NSObject//定義形參個(gè)數(shù)可變的方法-(void)test:(NSString *)name,...;@end

  Varargs.m

#import "Varargs.h"@implementation Varargs-(void)test:(NSString *)name,...{    // 使用va_list定義一個(gè)argList指針變量,該指針變量指向可變參數(shù)列表    va_list argList;    // 如果為第一個(gè)name參數(shù)存在,才需要處理后面的參數(shù)    if (name)    {        // 由于name參數(shù)并不在可變參數(shù)列表中,因此先處理name參數(shù)        NSLog(@"%@" , name);        // 讓argList指向第一個(gè)可變參數(shù)列表的第一個(gè)參數(shù),開(kāi)始提取可變參數(shù)列表的參數(shù)        va_start(argList, name);        // va_arg用于提取argList指針當(dāng)前指向的參數(shù),并將指針移動(dòng)到指向下一個(gè)參數(shù)        // arg變量用于保存當(dāng)前獲取的參數(shù),如果該參數(shù)不為nil,進(jìn)入循環(huán)體        NSString* arg = va_arg(argList, id);        while (arg)        {            // 打印出每一個(gè)參數(shù).            NSLog(@"%@",arg);            // 再次提取下一個(gè)參數(shù),并將指針移動(dòng)到指向下一個(gè)參數(shù)            arg = va_arg(argList, id);        }        // 釋放argList指針,結(jié)束提取        va_end(argList);    }}@end

  main函數(shù) 

int main(int argc, const char * argv[]){    @autoreleasepool {        Varargs* va = [[Varargs alloc] init];        [va test:@"瘋狂iOS講義"         , @"瘋狂Android講義", @"瘋狂Ajax講義" , nil];    }    return 0;}

   注意:個(gè)數(shù)可變的形參只能處于形參列表的最后。一個(gè)方法中最多之恩給你保吉安一個(gè)長(zhǎng)度可變的形參。

引自《瘋狂iOS講義(上)》


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 独山县| 永川市| 麻栗坡县| 梅河口市| 交城县| 南昌市| 集贤县| 梁河县| 通州区| 固安县| 星座| 鸡东县| 昌平区| 泸定县| 板桥市| 松原市| 翼城县| 山东| 枣阳市| 九江市| 临泽县| 个旧市| 瑞金市| 安多县| 东至县| 桐梓县| 当涂县| 江永县| 龙南县| 华安县| 宜昌市| 章丘市| 盱眙县| 河东区| 泾阳县| 兴化市| 麻城市| 江门市| 新源县| 永泰县| 遂昌县|