ios block 实现点语法、链式编程

相信用过masonry的童鞋,一定被它的魅力折服,真的很好用啊。masnory是用链式编程的思想来写的,用起来一个个block用点连接起来,即省代码又美观,巴特,链式编程是怎么样实现的嘞。。。不用着急,且往下看。

讲链式编程,不得不讲oc中的点语法,.XX是getter,.XX = XXX;是setter,显然链式编程是一串的,所以我们应该想到讲block声明为属性,并且在这些block属性的getter方法中做一些事情。哈哈,是不是简单易懂,巴特,如何去具体的实现链式编程呢,别急,这儿有我写的一个小demo,看了希望你对链式编程能理解。

一、常规写法

我们一般写方法函数的时候是通过以下方式写的

图1


图2

二、两个方法通过[]来进行连续调用

要做到连续调用,则两方法就必须有返回值,且返回值是当前类的本身,这样才可在调用一个方法后,调用另外一个方法,下面来看下

图2-1

实现方法:

图2-2

调用:

图2-3

三、通过点语法来实现两个方法

要通过点语法,就需要通过block的形式来实现。block具有一个函数的外观,又被当作一个变量。那么block就具备两个功能,第一:可以作为类的属性被'点'出来。第二:可以当作函数直接调用。下面逐个解释,第一个类的属性可以点出来,比如person.name;这很好理解,你一定见过,str.length;对吧。第二个呢,block作为一个变量,但是又可以把它当作指向函数的指针一样调用。

上述两个方法,怎么样才可以用点语法调用呢?

图3-1

实现:

图3-2

调用:

图3-3

四、点语法链式结构

要实现self.eat().like()这样的语法,则eat方法和like方法必须返回self,这样才可以调用;那么下面我们这么写:

图4-1

实现:

图4-2

调用:

图4-3

五、点语法链式带参数

带参数的怎么实现呢?其实很简单,我们创建block属性的时候,一般都是

图5-1

那eat和like方法带参数的实现很类似

图5-2

实现:

图5-3

调用:

图5-4

打印结果:

图5-5

六、点语法链式结构带block回调,在block里面处理事务,类似

self.eat(@"香蕉",^(NSString *food){

    NSLog(@"我喜欢吃%@",food);

});

定义:

图6-1

实现:

图6-2

调用:

图6-3

控制台打印结果:

图6-4

上述就是block实现点语法调用方法和链式编程,下面附上一个git,是对alertCtroller进行点语法addAction和AddTextField的实现:alertController点语法连接

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,062评论 3 119
  • 杨帆是活的人,生活中的人。这样的医生,这样的人才是我们见过的、认识的,甚至就是我们自己。 最近的《外科风云》和爆款...
    一台造粪机器阅读 6,230评论 0 1
  • “我是丁丁玉!丁丁玉!真是拿你们没办法,说了多少遍了,你们心里就只有丁丁!” 丁丁玉是一只小白猫,诶呦,她可没有其...
    千誉嘉言阅读 3,584评论 4 7
  • 《正念的奇迹》一本让你和自己和谐相处,熄灭所有痛苦的书。一直想将这本给予我很多帮助的书分享给更多的人。 《正念的奇...
    兔小姐Amanda阅读 5,341评论 2 5
  • 今生今世,我永远不会忘记这一天:2015年12月17日 那一天,在那个寒冷且晴朗的午后,你吃过中饭,走出了家门,就...
    梅花映雪阅读 1,819评论 5 6

友情链接更多精彩内容