先写几句废话。做iOS也已经两年有余。之前也想着开个博客,记录下开发的点点滴滴。但自我感觉总结能力不太好,再一个想要总结的东西网上基本也能查的到,也就搁置下来。最近又想着开一个博客,本想着第一篇博客来想讲下cocoapod的使用,但今天在做一个例子时,用到了block,心想网上能查到的block,前篇一律,大部分是个语法。但真正的项目中如何使用block呢,于是乎提笔记下此文,书写下自己对block最常用的方式,也作为自己博客的新篇章。此文只是作为block的理解的辅助文章,如有不合理,不对的地方,请不要吝啬阁下的流量,猛戳进来。
以下开始正文:
block常用的方式:属性,
方法参数,
对于我来说,block最常用的方法就是代替协议。而代替协议使用的时候,属性和方法参数就需要关联使用。
先看下我例子实现的效果,就是一个滚动视图,当点击某一个item时,返回相应item的内容:
定时滚动很简单。代码就不贴了。主要说说点击滚动视图时怎么返回里面的值。这个功能当然用delegate也能实现,但这样简单的回调我更倾向于用block。下面就说说block的实现方法。
首先要在这个滚动视图的类中声明一个block属性,就是上面的第一张截图,返回值空,参数需要一个字符串,
再者,声明一个block作为参数的方法,就是上面的第二张截图,这个block就是返回所需要的字符串值。
.m中的实现也非常简单,
先把方法中的block和属性进行绑定,说白点就是赋值:
这样在调取这个方法时,所执行的block就是属性block。
然后,在item的点击方法中给属性block 进行赋值:
这样就已经OK 了,看下实现:
这个方法你就可以在初始化self.rollView后直接调用,不需要协议那样单拿出来个方法了。
第一次写博客,不知道怎么传自己的demo,可能这里也不支持吧。如果有需要,我会上传到gitHub上,供使用。
此文有用无用,请给个评论,指正我写作的方式,也让我自己能够写出更好的内容,谢谢。