Block

Block封裝了一段代碼,能夠在任什麼時候候執行多線程

Block能夠做爲函數參數或者函數的返回值,而其自己又能夠帶輸入參數或返回值。它和傳統的函數指針很相似,可是有區別:異步

block是inling(內聯函數)的,而且默認狀況下它對局部變量是隻讀的函數

蘋果官方建議儘可能多用block,在多線程、異步任務、集合遍歷、集合排序、動畫轉場用的不少。動畫

 

1、block能夠訪問外面定義的局部變量。若是外部的變量用了__block關鍵字進行了聲明,就能夠在block內部修改這個變量。不然不能修改。spa

void test2() {線程

    

    //__block有兩個下劃線。指針

    

    __block int c = 20;排序

    

    //聲明瞭一個block變量。test

    

    MySum sum = ^(int a, int b) {變量

        

        //若是外部的變量用了__block關鍵字進行了聲明,就能夠在block內部修改這個變量。不然不能修改。

        c = 29;

        

        //block能夠訪問外面定義的局部變量。

        NSLog(@"%i",c);

       

        return a + b;

        

    };

    

    NSLog(@"%i",sum(1,2));

}

相關文章
相關標籤/搜索