block的用法

1.  block的声明:

声明block变量的语法格式:

    返回值类型 (^block变量的名称)(参数列表);


     int (^myBlock3)(int num1,int num2);

2. block的初始化

 ^返回值类型(参数列表){

            代码段;

         };

3.block的简写

1. 如果我们写的代码段没有返回值.那么代码段的void可以省略.

         void (^myBlock1)() =  ^(){

             NSLog(@"我爱你");

             NSLog(@"我恨你");

         };

         注意,我说的是代码段的返回值如果是void可以省略,声明block变量的返回值无论是什么不可以省略.

2. 如果我们写的代码段没有参数,那么代码段的小括弧写可以省略.


         int (^myBlock2)() =  ^int{

             int num1 = 10 + 20;

             return num1;

         };

         再次强调: 我们说的是代码段.


         所以,当1个代码段既没有参数,也没有返回值的适合,就只写^


         void (^myBlock1)() =  ^{

             NSLog(@"我爱你");

             NSLog(@"我恨你");

         };

3. 声明block变量的时候.如果有指定参数.可以只写参数的类型而不写参数的名称;


     int (^myBlock3)(int,int) =  ^int(int num1,int num2){

         int num3= num1 + num2;

         return num3;

     };

     注意: 这个地方我们说的是声明block变量的时候 再写代码段的时候 类型和名称都要写.

4. 无论代码段是否有返回值.在写代码的时候.可以不写返回值类型 省略.

        如果在写代码段的时候,省略了返回值,这个时候系统会自动的确定返回值的类型.


        如果代码段中没有返回任何数据 那么它会认为这个代码段是没有返回值的.

        如果代码中有返回数据 返回的数据是什么类型 它就会认为这个代码段是什么类型的.

4.关于block访问外部变量的问题

  1.  在block代码块的内部可以取定义在外部的变量的值, 定义在外部的局部变量和全局变量.

  2.  在block代码块的内部可以修改全局变量的值.但是不能修改定义在外部的局部变量的值.

  3.  如果你希望我们定义的局部变量可以允许在block代码的内部去修改,那么就为这个局部变量加1个__block的修饰符.

注意

 1.  block是1个数据类型.

 2.  block变量是来存储1段代码的.

 3.  block变量的声明.

 4.  block变量的初始化

 5.  执行存储在block变量中的代码.

 6.  关于4个简写.

 7.  使用typedef将复杂的block定义简化.

 8.  访问外部变量的问题.


5.关于block循环使用的注意

使用block的时候,如果有循环引用,编译器会提示警告。

如果对象没有持有Block对象,那么不会产生循环引用。如果对象持有了block对象,那么在block引用self的时候这么定义:

__weak typeof(self) weakSelf = self;


转载于:https://my.oschina.net/u/2602720/blog/600166

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值