block详解

在网上搜关于block的知识都不是特别详细,在这里对block做一个详细的描述,从入门开始到满足日常大部分开发需要。

block定义:block说白了就是一段代码块,提前存储一段代码,想要执行存储的那块代码,调用一下就执行,用于回调。和函数作用差不多,但是比函数更加灵活,可以在方法体外定义为全局,也可以在方法体内部定义为局部,但是函数不行只能在方法体外定义为全局,block块更加灵活。话不多说,直接上代码,刚写的Demo,描述与截图供大家就爱神理解。

block入门:

1.block块内部有时候会引用块外部局部变量,块内部局部变量值变化了,不会影响外部局部变量的值。但是加上关键字__block情况就相反了。

2.block块内部有时候会引用块外部的全局变量,情况会和加上__block的结果一样。不过这里引用全局变量会出现循环引用的问题。



  在这里附上具体出现循环引用的解决办法。


block的定义:
第一种是用 typedef 第二种是直接定义作为一个属性 这样block块可以夸区域,在不同的类之间进行传递调用,
        具体解释区别如下图解释:


block进阶

   将block块作为一个参数在类之间传递,并且block块内部包装了一个方法,当从类A传递到B之后,在B中创建一个对应类型的属性block去接受,在适当的时候去触发执行,这个例子在日常开发中也会常遇到。具体操作看截图
在storyboard自带的biewController中写一个testhaha的方法,并且在Main.storyboard中加赠一个跳转按钮的方法,点击跳转进入testViewController,并testVC的带block参数的方法,将来testhaha方法传递到testVC页面

在testVC中会有一个同类型的block区接受传过来的block参数(内部包有testhaha方法),在需要的时候去调用执行

在testVC界面上又一个触发block方法命名的按钮(方法名是trigger ),点击之后会触发本地保存的block去执行,释放代码块执行testhaha方法

这样在testVC界面点击了触发block方法按钮,就会执行testVC方法  输出


第二个关于进阶要讲解的就是返回参数的操作,在这里不做过多讲解,就是后几张图中加//注释的部门,并附有结束说明,给大家留个练习题,研究一下 ~@^@~


block作为参数传递的一些心得体会:
下面图1在红框[testVC  ]左边应该加上 上面一行int b = 来接收·~因为这个带有block参数的方法,返回值是int





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值