亚洲一区亚洲二区亚洲三区,国产成人高清在线,久久久精品成人免费看,999久久久免费精品国产牛牛,青草视频在线观看完整版,狠狠夜色午夜久久综合热91,日韩精品视频在线免费观看

IOS 開發(fā)學習總結objectivec面向對象之——方法 -電腦資料

電腦資料 時間:2019-01-01 我要投稿
【m.ishadingyu.com - 電腦資料】

    objective-c 的方法不能獨立存在,所有的方法都必須定義在類里,

IOS 開發(fā)學習總結objectivec面向對象之——方法

。方法在邏輯上,要么屬于類,要么屬于對象。

方法的所屬性

    不難發(fā)現(xiàn),方法在語法上和功能上,方法與函數(shù)很相似。其實,方法是由傳統(tǒng)的函數(shù)發(fā)展而來的。

    objective-c 調用函數(shù)時的傳參機制和調用方法時的傳參機制是一樣的,都是值傳遞,都是傳入?yún)?shù)的副本。

方法與傳統(tǒng)的函數(shù)的顯著不同:

    在結構化編程語言里,函數(shù)是一等公民。整個程序是由一個一個函數(shù)組成;

    面向對象的語言里,類是一等公民。因此在 OC 里方法不能獨立存在,必須屬于類或者對象。

    由于 objective-c 里的方法不能獨立存在,也不能像函數(shù)那樣獨立執(zhí)行,執(zhí)行方法時必須使用類或者對象作為調用者。

    由上,objective-c 中方法的所屬性主要體現(xiàn)在下面的3個方面:

    1. 方法不能獨立定義,只能在類體里定義。

    2. 方法在邏輯上,要么屬于類,要么屬于對象。

    3. objective-c 里的方法不能獨立存在,也不能像函數(shù)那樣獨立執(zhí)行,執(zhí)行方法時必須使用類或者對象作為調用者。

形參個數(shù)可變的方法

    如果在定義方法時,在最后一個形參名后增加逗號和三點(,…),就表明該形參可以接受多個參數(shù)值。

    為了在程序中獲取個數(shù)可變的形參。需使用如下關鍵字:

    - va_list:這是個用于定義指向可變參數(shù)列表的指針變量。

    - va_start:這是個函數(shù)。指定開始處理可變形參的列表,并讓指針變量指向可變形參列表的第一個參數(shù)。

    - va_end:結束處理可變形參,釋放指針變量。

    - va_arg:該函數(shù)返回指針當前指向的參數(shù)的值,并將指針移動到指向下一個參數(shù)。

    如下示例程序:

    頭文件:VarArgs.h

<code class="hljs" r="">#import<foundation foundation.h="">@interface VarArgs : NSObject// 定義形參個數(shù)可變的方法- (void)test:(NSString *) name, ...;@end</foundation></code>

    實現(xiàn)文件:VarArgs.m

<code class="hljs" bjectivec="">#import VarArgs.h@implementation VarArgs- (void)test:(NSString *) name, ...{    // 使用va_list定義一個argList指針變量,該指針變量指向可變參數(shù)列表    va_list argList;    // 如果為第一個name參數(shù)存在,才需要處理后面的參數(shù)    if (name)    {        // 由于name參數(shù)并不在可變參數(shù)列表中,因此先處理name參數(shù)        NSLog(@%@ , name);         // 讓argList指向第一個可變參數(shù)列表的第一個參數(shù),開始提取可變參數(shù)列表的參數(shù)        va_start(argList, name);         // va_arg用于提取argList指針當前指向的參數(shù),并將指針移動到指向下一個參數(shù)        // arg變量用于保存當前獲取的參數(shù),如果該參數(shù)不為nil,進入循環(huán)體        NSString* arg = va_arg(argList, id);        while (arg)        {            // 打印出每一個參數(shù).            NSLog(@%@,arg);            // 再次提取下一個參數(shù),并將指針移動到指向下一個參數(shù)            arg = va_arg(argList, id);        }        // 釋放argList指針,結束提取        va_end(argList);    }}@endint main(int argc , char * argv[]){    @autoreleasepool{        VarArgs* va = [[VarArgs alloc] init];        [va test:@瘋狂iOS講義             , @瘋狂Android講義, @瘋狂Ajax講義 , nil];    }}</code>

    本質上說,這個可變參數(shù)也是個類似數(shù)組的結構,

電腦資料

IOS 開發(fā)學習總結objectivec面向對象之——方法》(http://m.ishadingyu.com)。最后要指出的是,個數(shù)可變的形參只能處于形參列表的最后。即:一個方法中最多只能有一個長度可變的形參。

最新文章