#warning 不要在category中重写方法
【大咖・来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》
在iOS开发中,category(类目、类别)是一个很好用的东西。(纯文字,短小而精罕)
我们可以给一个类添加方法和属性。好比如NSDateFormatter这玩意每次都new开销是非常大的,这在tableview中的体现尤为明显,有了category我们就可以为他写一个单例,避免了每次都为它开辟新的内存。
于是,我们想,如果用category去重写该类的方法,会怎样?实测可行,果然被覆盖了。。。但是,作为祖国未来的花朵,我们不能这么干!
理由如下:
1、category没有办法去代替子类,它不能像子类一样通过super去调用父类的方法实现。如果category中重写覆盖了当前类中的某个方法,那么这个当前类中的原始方法实现,将永远不会被执行,这在某些方法里是致命的。(ps:这里提一下,+(void)load方法是一个特例,它会在当前类执行完之后再在category中执行。)
2、同时,一个category也不能可靠的覆盖另一个category中相同的类的相同的方法。例如UIViewController+A与UIViewController+B,都重写了viewDidLoad,我们就无法控制谁覆盖了谁。
3、通过观察头文件我们可以发现,Cocoa框架中的许多类都是通过category来实现功能的,可能不经意间你就覆盖了这些方法中的其一,有时候就会产生一些无法排查的异常原因。
4、category的诞生只是为了让开发者更加方便的去拓展一个类,它的初衷并不是让你去改变一个类。
结论:
要重写方法,当然我们首推通过子类重写父类的方法,在一些不方便重写的情况下,我们也可以在category中用runtime进行method swizzling(方法的偷梁换柱)来实现。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
程序员面试不完全指南
【大咖・来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》 程序员找工作难,想要被成功聘用更难。最常见的办法是经历一次又一次的面试失败后自己琢磨出面试技巧,当然也可以花钱到一些培训机构去接受专业的书面简历和模拟面试的指导。这些方法可能都会奏效,但是却并不是时间和金钱利用率***的。软件行业的工作期望比其他大多数岗位都要来得高。在这严格的选拔人才的机制下,只要我们花点心思,还是可以手到擒来,顺利地拿下心仪的工作岗位。 写简历 既简短又要突出重点。不超过两页。面试官不需要个人传记。 在描述每个项目的时候避免长篇大论。在每份工作和项目中注明用了什么技术,以便与面试官作深入的探讨。 简单说说以前的每份工作。 无需提供涉及非技术内容的信息。例如在快餐、零售和任何其他非技术岗位上的工作经验就没有说的必要。 在简历上不可说谎。面试官一问便知真与假。 如果可能的话,让在这一行的朋友给你的简历提提意见。有时候简历上面即使是一个很小的错误搞不好恰好就是某些雇主的雷区。 除了简历,还可以做一个可视的作品集。可以是软件的截图,也可以是你写的一些代码示例。关键是要展示你对自己的工作感到非常自豪。 将...
- 下一篇
小米性价比危机终于显现 未来的救赎之路该怎么走?
【大咖・来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》 作为国内数一数二的新兴互联网手机品牌,小米这段时间的日子并不好过,红米Note2爆出的“换屏门”事件影响之大,足以让小米成为舆论的风口浪尖。然而小米的困局远不是从红米Note2事件开始的,小米既有的发展模式已经成为小米进一步发展的桎梏。说起小米2014年至今的状况,无论是米黑还是米粉亦或是中立的用户都已经无法用曾经那样“一片大好的形势”来形容。 而早在当年小米欣欣向荣的快速发展之时,就有业内人士对小米的发展模式与营销特性提出质疑。互联网线上营销模式的长期持续性、毫无节制的饥饿营销、高配低价的零利润等等问题都成为小米发展道路上一个又一个阻碍。然而即便在市场上已经出现不利于小米的情况时,小米内部也并没有对自己的发展模式表示担忧,而是以一种高高在上的态度俯瞰整个国内手机市场。终于,随着2015年***季度小米增速明显下滑,市场上的“小米盛世”几乎宣告终结,曾经被奉为“�潘烤刃�”的小米手机也显得光辉不再。加上华为荣耀、魅族、酷派、奇酷等众多品牌的合力围剿,小米终于陷入了内忧外患的局面。 性价比的双刃剑危机 不能否认的是,...
相关文章
文章评论
共有0条评论来说两句吧...