swift-17oc中的block

我以前做的swift筆記, 之前都是整理在onenote上, 最近想到整理出博客. 也方便自己查找, 可以當做自己的一份文檔.

block是一個數(shù)據(jù)類型

用來存儲代碼段
代碼段有兩個特征:
返回值 參數(shù)

普通的數(shù)據(jù)類型,聲明變量的語法

數(shù)據(jù)類型 變量名;

根據(jù)block要存儲的代碼段的特征不同,聲明block的時候的數(shù)據(jù)類型 也不同

聲明block的語法:

返回值類型 (^變量名)(參數(shù)列表);

block賦值的語法:

變量名 = ^返回值類型(帶參數(shù)名的參數(shù)列表){ };

賦值的時候,返回值類型可以省略.
賦值的時候,如果沒有參數(shù),參數(shù)列表可以省略.

可以在聲明的同時賦值,也可以在聲明之后賦值.

block的調(diào)用

blk()

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    //block blk
    //聲明一個返回值為空 沒有參數(shù)的block類型的變量 blk
    void (^blk)() = ^void(){
        NSLog(@"人生中不知有幾回:心是滿的");
    };
    blk();
    
    //簡寫
    void (^blk1)() = ^{
        NSLog(@"人生中第一次:內(nèi)心是滿的");
    };
    blk1();
    
    //聲明一個返回值為int 沒有參數(shù)的block類型的變量 blk1
    int (^blk2)() = ^int(){
        return 10;
    };
    NSLog(@"%d",blk2());
    //簡寫
    int (^blk3)() = ^{
        return 11;
    };
    NSLog(@"%d",blk3());
    
    //聲明一個返回值為int,有兩個int類型參數(shù)的block類型的變量 blk2
    int (^blk4)(int, int) = ^int(int a,int b){
        
        return a + b;
    };
    NSLog(@"%d",blk4(1,2));
    
    //聲明一個無返回值,有一個int類型參數(shù)的block類型的變量 blk3
    void (^blk5)(int) = ^void(int a){
        NSLog(@"a * a = %d", a * a);
    };
    blk5(5);
    
    return 0;
}
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Lua 5.1 參考手冊 by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 14,235評論 0 38
  • 2.1 Blcoks概要 2.1.1 什么是Blocks Blocks是C語言的擴充功能——“帶有自動變量(即局部...
    SkyMing一C閱讀 2,448評論 6 18
  • Block基礎回顧 1.什么是Block? 帶有局部變量的匿名函數(shù)(名字不重要,知道怎么用就行),差不多就與C語言...
    Bugfix閱讀 6,904評論 5 61
  • 很久沒有碼字了,趁著換了新電腦,有敲字的動力,就來隨便寫寫,不想考慮什么邏輯,開心就好。 這周是挺特別的一周,因為...
    吵吵鬧鬧的BBQ閱讀 392評論 0 0
  • 今天是到大理的第3天,是在大理旅游的第2天。早上依舊睡到10點左右才起來洗漱化妝,準備出門已經(jīng)十一點了。和客棧老板...
    邱秋邱閱讀 349評論 0 2

友情鏈接更多精彩內(nèi)容