關於OC中的block自己的一些理解(一),ocblock理解

來源:互聯網
上載者:User

關於OC中的block自己的一些理解(一),ocblock理解

一、關於block

1、block的作用:儲存一段代碼。

2、蘋果官方推薦的一種文法,類似於C語言的函數,但是比函數更加靈活。

3、^是block文法的標識。

二、block的用法

1)無傳回值無參數

  

 1 - (void)myFirstBlock 2 { 3     //1.定義block 4     void (^myblock)() = ^{ 5         NSLog(@"無參數無傳回值"); 6     }; 7     //2.調用block 8     myblock(); 9     10 }

輸出結果:

2016-02-18 09:56:50.124 01-block[750:25107] 無參數無傳回值

 2)有參數沒有傳回值

- (void)mySecondBlock{    //1.定義block    void (^mySecondBlock)(int,int) = ^ (int num1,int num2){        NSLog(@"有參數無傳回值:%d",num1 + num2);    };    //2.調用block    mySecondBlock(2,3);}

 輸出結果:

2016-02-18 10:03:22.221 01-block[811:30160] 有參數無傳回值:5

 3)有參數有傳回值

 1 - (void)myThirdBlock 2 { 3     //1.定義block 4     double (^myThirdBlock)(double,double) = ^ (double r1,double r2){ 5         return r1 + r2; 6     }; 7     //2.調用block 8      double r3 = myThirdBlock(1.1,2.2); 9     NSLog(@"有參數有傳回值:%f",r3);10 }

輸出結果:

2016-02-18 10:06:42.615 01-block[861:32505] 有參數有傳回值:3.300000

三、block文法的格式

四、block的注意點

1)Block內部可以訪問外部變數;

2)預設情況下,Block內部不能修改外部的局部變數

3)給局部變數加上__block關鍵字,則這個局部變數可以在block內部進行修改

範例程式碼如下:

1 - (void)myFourBlock2 {3     int num = 5;4     void (^myFourBlock)() = ^{5     6         num = 6;7         NSLog(@"%d",num);8     };9 }

如果寫成上面的代碼,Xcode會在第六行“num = 6;”報錯:missing __block type specifier;

修改代碼如下:

- (void)myFourBlock{    __block int num = 5;    void (^myFourBlock)() = ^{            num = 6;        NSLog(@"%d",num);    };    myFourBlock();}

輸出結果:

2016-02-18 10:25:02.195 01-block[1016:45943] 6

 代碼虐我千百遍,我待代碼如初戀!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.