iOS學習-9,ios-9

來源:互聯網
上載者:User

iOS學習-9,ios-9

來自李明傑的視頻。

block 用來儲存一段代碼

block 的標誌:^

block  跟函數很像

1).可以儲存代碼  2).有傳回值  3). 有形參

temp1:沒有傳回值、沒有形參的 block

如果 block 沒有形參,可以省略 ()

void(^myblock)() = ^{        NSLog(@"----------");        NSLog(@"----------");    };    // 利用 block 變數調用 block 內部的代碼    myblock();

temp2:有傳回值,有形參

int (^sumblock)(int,int) = ^(int a,int b){        return a+b;    };    //傳回值    int c = sumblock(1,1);    NSLog(@"%d",c);

temp 3:用一個 block 輸出 n 條橫線

void (^lineblock)(int) = ^(int n){        for (int i = 1; i < n; i++) {            NSLog(@"-------");        }    };    //無傳回值,加 int 類型的參數    lineblock(5);

temp 4

__block int a = 10;    void (^block)();    block = ^{        /*         block 內部可以訪問外面的變數         預設情況下,block 內部不能修改外面的局部變數         給局部變數加上 __block 關鍵字,這個局部變數就可以在block內部修改        */        a = 20;        NSLog(@"%d",a);    };    block();

temp 5:使用 typedef 定義 block 類型

// 類型 + 變數    MyBlock sumBlock;    sumBlock = ^(int a,int b){        return a+b;    };    sumBlock(10,9);    //減法    MyBlock minusBlock;    minusBlock = ^(int a,int b){        return a - b;    };    minusBlock(10,9);    //乘法    MyBlock multipBlock;    multipBlock = ^(int a,int b){        return a * b;    };    multipBlock(10,9);    //除法    MyBlock divideBlock;    divideBlock = ^(int a,int b){        return a / b;    };    divideBlock(10,2);        NSLog(@"\n %d \n %d \n%d \n %d",sumBlock(10,9),minusBlock(10,9), multipBlock(10,9),divideBlock(10,2));

 總結:

1.如何定義 block 變數

int (^sumBlock)(int,int);void (^myBlock)();

2.如何利用 block 封裝代碼

^(int a,int b){        return  a - b;    };    //沒有參數    ^(){        NSLog(@"-----");    }    //沒有傳回值    ^{        NSLog(@"-----");    }

3.  block 訪問外面變數

1.block 內部可以訪問外面的變數2.預設情況下,block 內部不能修改外面的局部變數
3.給局部變數加上 __block 關鍵字,這個局部變數就可以在block內部修改

4.利用 typedef 定義 block 類型

typedef int(^MyBlock)(int,int);    //以後就可以利用 MyBlock 這種類型來定義 block 變數    MyBlock block;    MyBlock b1,b2;    b1 = ^(int a,int b){    return a+b;    };    MyBlock b3 = ^(int a,int b){    return a+b;    };

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.