iOS中block使用注意事项

来源:互联网 发布:蜜蜂汇金是哪个软件 编辑:程序博客网 时间:2024/06/09 16:52

1.使用前加判断:

if(_transferCourseData){

        _transferCourseData();

    }

2.__weak

__weak GradeMaterialsChooseController *weakgradeVC = gradeVC;

    weakgradeVC.transferCourseData = ^(){

        [self updateCourseDataWithHUD:YES];

    };

但是,这里得强调

如果self对象持有操作对象的引用,同时操作对象当中又直接访问了self时,才会造成循环引用

(只有self直接强引用block,才会出现循环引用)

单纯在操作对象中使用self不会造成循环引用

注意:此时不能使用(weakSelf)

例如多线程中的block

3. __block

在定义Block时,会在Block中建立当前局部变量内容的副本(拷贝)
后续再对该变量的数值进行修改,不会影响Block中的数值
如果需要在block中保持局部变量的数值变化,需要使用__block关键字
使用__block关键字后,同样可以在Block中修改该变量的数值

0 0
原创粉丝点击