IOS中的__block關鍵字簡單使用

來源:互聯網
上載者:User

IOS中的__block關鍵字簡單使用

/**13.__block什麼時候用?**/

結論:在block裡面修改局部變數的值都要用__block修飾

/**14.請教一個問題:在block裡面, 對數組執行添加操作, 這個數組需要聲明成 __block嗎?**/

 

不需要聲明成__block,因為testArr數組的指標並沒有變(往數組裡面添加對象,指標是沒變的,只是指標指向的記憶體裡面的內容變了)

/**15.在block裡面, 對NSInteger進行修改, 這個NSInteger是否需要聲明成__blcok ?**/

 

NSInteger的值發生改變,則要求添加__block修飾

 

代碼執行個體:

 

NSMutableArray *testArr =[[NSMutableArray alloc] initWithObjects:@"1",@"2", nil];    __block NSInteger a=10;    /**結論:在block裡面修改局部變數的值都要用__block修飾**/    void (^TestBlock)(void) = ^{//        NSMutableArray *temArr=[[NSMutableArray alloc] init];//        testArr=temArr;//testArr數組的指標發生改變時,testArr要添加__block修飾                a=100;//a的值發生改變,則要求添加__block修飾//        testArr不需要聲明成__block,因為testArr數組的指標並沒有變(往數組裡面添加對象,指標是沒變的,只是指標指向的記憶體裡面的內容變了)        [testArr addObject:[NSString stringWithFormat:@"3"]];        NSLog(@"_block testArr :%@ a:%d", testArr,a);            };    a=0;    TestBlock();        NSLog(@"testArr :%@ a:%d", testArr,a);

運行結果:

 

 

2015-05-13 20:16:23.862 WXMovie_study[22827:1683307] _block testArr :(

1,

2,

3

) a:100

2015-05-13 20:16:23.862 WXMovie_study[22827:1683307] testArr :(

1,

2,

3

) a:100


 

 


聯繫我們

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