扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
block出现之后,apple的library也在渐渐的,由少到多的支持block。BlocksKit(github)是一个library,他给一些类带来了更好的block支持。主要功能有下面三个方面:
成都创新互联公司主要从事网页设计、PC网站建设(电脑版网站建设)、wap网站建设(手机版网站建设)、自适应网站建设、程序开发、网站优化、微网站、小程序定制开发等,凭借多年来在互联网的打拼,我们在互联网网站建设行业积累了丰富的成都网站设计、网站建设、外贸网站建设、网站设计、网络营销经验,集策划、开发、设计、营销、管理等多方位专业化运作于一体。* 通过block传入事件处理函数
* 创建动态代理,传入block给想要实现的方法。
* 在很多基础的类上增加额外的方法。
拿UIControl打比方,要想处理一个事件:
以前:
需要通过addTarget:(id)action:(selector)forControlEvents:(UIControlEvents)将某一个对象的某一个selector传入,一般的做法是在viewcontroller里定义一个方法专门处理某一个按钮的点击事件。
现在:
通过addEventHandler:(BLSenderBlock)forControlEvents:(UIControlEvent)将一个block注册上去,不需要单独定义方法。
代理是objective c里常用的模式,主要用来做逻辑切分,一个类做一类事情,让代码的耦合度减少。但他不方便的地方在于,要创建一个代理,就要定义一个类,声明这个类遵循那些接口,然后实现这些接口对应的函数。动态代理(Dynamic delegate)则让我们能够在code里,on the fly的创建这样一个代理,通过block定义要实现的方法。例子看这里。
A2DynamicDelegate *dd = alertView.dynamicDelegate;
[dd implementMethod: @selector(alertViewShouldEnableFirstOtherButton:) withBlock: ^(UIAlertView *alertView) { NSLog(@"Message: %@", alertView.message); return YES; }];
alertView.delegate = dd;
比如在NSArray上增加了函式编程的each, map, reduce等。
详细文档在这里。
从第一刻看到BlocksKit,我就把他作为每一个iOS项目中必不可少的基础类库。我个人使用最多的功能就是通过block来传入事件处理方法。对于像我这样希望将相关的code放到一起的程序员,BlocksKit绝对是福音。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流