美文网首页
iOS开发之Block

iOS开发之Block

作者: Ming普 | 来源:发表于2016-07-09 09:50 被阅读25次

前言

block是一个从iOS4后开始引入的代码块语法,能够代替代理来实现反向传值。接下来我将从以下几个方面介绍block,帮助大家一点一点揭开block的神秘面纱。

block基础

block作为参数

block和delegate

block的内存管理



block基础

声明block

1、返回值类型可以是nil,block名字随意,参数只需数据类型就可,多个参数用逗号隔开。

实现block

1、因为我在定义oneFrom这个block的时候,设置了一个返回值,所以我实现这个block的时候需要return一下。

2、我在这里写的是加法运算,如果我想做其他运算,我只需要修改一下这个block块便可。

调用block

1、oneFrame这个block在声明时设置什么类型的返回值就要用什么来接收。

block基础用法总结

block作为参数

方式一

将block作为参数的方式1

1、 在blockParameterTwo的参数里我直接声明了一个无返回值无参数的block。

如果想要设置有参数有返回值的,按照如下声明便可。

- (void)blockParameterTwo:(int (^)(int a,int b))clickView

2、当我点击屏幕时,调用blockParameterTwo的同时会将我的代码块也给传入到该方法中。最终在这个方法中调用我的传入的block,才会执行我调用该方法时设置的代码块。

方式二

通过typedef将block转会为一种数据类型使用

通过步骤1创建的block数据类型申明一个对象

实现一个带block参数的方法

调用第三步实现的方法

1、通过第二种方式,能够方便的同时声明多个同样的block。

block与代理

我分别采用delegate和block两种方式自定义一个能够被点击的label

DelegateTapLabel: 采用代理来监听Label的点击事件(代理的具体实现方式,在这里我就不写了,在我给的demo已经写好)

BlockTapLabel:采用block来监听Label的点击事件

BlockTapLabel.h

BlockTapLabel.h

1、我这里声明的是无参无返回值的一个block

BlockTapLabel.m

BlockTapLabel.m

使用这个能点击的label

使用这个能点击的label

1、使用block来实现反向传值,不用遵守协议不用挂代理,不用再去实现代理方法。

block的内存管理

1、建议自己可以试试如果把__block修饰去掉或者不对self做处理会报什么样的错误。

相关文章

  • iOS开发-由浅至深学习block

    iOS开发-由浅至深学习block iOS开发-由浅至深学习block

  • iOS开发基础:开发两年的你也不会写的Block

    iOS开发基础:开发两年的你也不会写的Block iOS开发基础:开发两年的你也不会写的Block

  • iOS开发之Block

    1.block是ios中的一种比较特殊的数据类型,可参考C语言的函数指针 是用来保存一段代码,可以在恰当的时间在取...

  • iOS开发之Block

    1.OC中 2.Swift中 3.案例一block回调 UMengShareManage调用testFunctio...

  • iOS 开发之Block

    ios4.0之后,block横空出世,它本身封装了一段代码并将这段代码当做变量,通过block()的方式进行回调....

  • iOS开发之Block

    前言 block是一个从iOS4后开始引入的代码块语法,能够代替代理来实现反向传值。接下来我将从以下几个方面介绍b...

  • iOS开发之Block

    Block是啥? Block又称作匿名函数,是苹果引入的,在C、C++、Objective-C下均可使用。其他的一...

  • iOS开发之Block

    block的本质 block本质上也是一个OC对象,它内部也有个isa指针。 block是封装了函数调用以及函数调...

  • iOS进阶之Block的本质及原理

    iOS进阶之Block的本质及原理 前言 相信稍微有点开发经验的开发者,应该都对block有一定的了解。刚开始使用...

  • block引用变量造成循环引用解决方案

    参考文章:[ iOS之Block报错:capturing self strongly in this block ...

网友评论

      本文标题:iOS开发之Block

      本文链接:https://www.haomeiwen.com/subject/tbvrjttx.html