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




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值