申明:在《方恨少》那一期(回复108 可读),我写了这么一句话,“Mac技巧写了这么多期,我觉得我需要更多的积累才能继续输出,我在考虑这玩意是不是也搞个第一季,完结之后重新思考一段时间再继续上路……”
没想到这句话同时引发了微信公众平台“鬼脚七”的共鸣。鬼脚七的微信号是taobaoguijiaoqi,由知名技术人文德运营,他的微博ID是 @淘宝鬼脚七,长期专注于搜索引擎、电子商业。他运营的平台“鬼脚七”主要分享电商资讯、搜索趋势、淘宝动态、产品设计和人文感悟,不知道他哪来那么多的精力,每天更新,文长而有趣,我关注之后,学到了很多好玩有用的知识,推荐给大家。
我俩聊天时想,是否可以类似美剧那样一季一季的写微信平台,这样作者和读者都有个空档期来思考一些东西。遂决定,鬼脚七和Mac技巧这两个公众账号将于2013年4月28日结束第一季,第二季开启时间会在第一季的最后一期文章里说明,这段时间大家有什么建议或者意见,可以随时反馈给我们,非常感谢!
以下正文,今天讲个小故事。
在一场大地震之后,满目都是破坏和混乱,一位父亲安顿好家里其他人之后,跑去儿子就读的学校,但是学校已经被夷为平地,父亲痛苦不堪,但是他想起了对儿子的承诺:无论发生什么,我都会在你身边。于是这位父亲找到儿子所在的教室位置,开始在石砾中挖掘和寻找。
这时候更多的父母赶到学校,他们变得绝望和无助,不停的呼唤孩子的名字,也有好心人过来劝阻这位父亲,一切都太迟了,接受现实吧,回去吧,等等。面对劝阻,这位父亲的回答只有一句话,你们要帮我吗?然后继续一块石头一块石头挖,寻找自己的儿子。
消防队长和警察也开始劝这位父亲,这里还有危险,请尽快离开,我们会处理一切的。但这位父亲的回答是:你们要帮我吗?然后继续寻找。
为了搞清楚自己的儿子是死是活,父亲继续挖掘,在经过30多个小时之后,父亲推开了一块巨大的石头,听到下面有响声,他大声喊着,儿子,是你吗?
这时父亲听到了这一生最美妙的天籁之音:爸爸吗?是我,我知道你会来救我的!
这个教室有30多个孩子,教室倒塌时,刚好形成一个三角形的支架,为其中的14个孩子形成了一道生命的屏障。因为这位父亲,14个孩子幸存下来。
这是我在很久以前的一本叫做《每天读一点英文》的杂志上看到的一则短文,当时印象非常深刻,现复述下来,送给所有坚守承诺和保有希望的人。
今日Mac技巧:
继续介绍OC的Protocol吧。
Protocol一般使用在哪些场景呢?Objective-C里的Protocol和Java语言中的接口很类似,如果一些类之间没有继承关系,但是又具备某些相同的行为,则可以使用Protocol来描述它们的关系。不同的类,可以遵守同一个Protocol,在不同的场景下注入不同的实例,实现不同的功能。其中最常用的就是委托代理模式,Cocoa框架中大量采用了这种模式实现数据和UI的分离。例如UIView产生的所有事件,都是通过委托的方式交给Controller完成。根据约定,框架中后缀为Delegate的都是Protocol,例如UIApplicationDelegate,UIWebViewDelegate等,使用时大家可以留意一下,体会其用法。
使用Protocol时还需要注意的是:
1、Protocol本身是可以继承的,比如:
@protocol A
-(void)methodA;
@end
@protocol B < A >
-(void)methodB;
@end
如果你要实现B,那么methodA和methodB都需要实现。
2、Protocol是类无关的,任何类都可以实现定义好的Protocol。如果我们想知道某个类是否实现了某个Protocol,还可以使用conformsToProtocol进行判断,如下:
[obj conformsToProtocol:@protocol(ProcessDataDelegate)]