/**13.__block什麼時候用?**/
結論:在block裡面修改局部變量的值都要用__block修飾
/**14.請教一個問題:在block裡面, 對數組執行添加操作, 這個數組需要聲明成__block嗎?**/
不需要聲明成__block,因為testArr數組的指針並沒有變(往數組裡面添加對象,指針是沒變的,只是指針指向的內存裡面的內容變了)
/**15.在block裡面, 對NSInteger進行修改, 這個NSInteger是否需要聲明成__blcok ?**/
NSInteger的值發生改變,則要求添加__block修飾
代碼實例:
[objc] view plaincopy
- NSMutableArray *testArr =[[NSMutableArray alloc] initWithObjects:@"1",@"2", nil 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