前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >load方法简化类的负载、结构化工程

load方法简化类的负载、结构化工程

作者头像
進无尽
发布2018-09-12 18:33:46
6020
发布2018-09-12 18:33:46
举报
文章被收录于专栏:進无尽的文章進无尽的文章

前言:

这篇文章即是技术篇又是跟项目架构设计相关的文章,(个人是这样感觉的),一直在搜集和总结产品架构方面的技术和技巧,很多时候都是自己知道,但是不知道怎么写出来,恰好看到一篇别人的文章就借机在今天就简述下load方法在简化类的负载、结构化工程方面的实践吧!在原文作者的基础上,我又亲测后添加了一些新的知识,大家比较后就会发现的,文章最后会附出我布局这篇文章的原文出处。


场景:

有时候一个比较大型的项目(是比较大型,算是中小型)中的AppDelegate类中是这样的

Paste_Image.png

这还不算多的,有的可能更多,那么有没有什么方法可以简化AppDelegate 的设置呢?

思路

  • 类别的一个作用就是类的分散实现,我们可以使用类别,对AppDelegate 扩充,这样就可以把原本堆在一起的代码分散到几个类中实现,管理起来比较简单,而且增加代码的可读性
  • 在Objective-C中,绝大多数类都继承自NSObject这个根类,而该类及其子类有load方法,可以用来实现初始化操作。对于加入运行期系统中的每个类(class)及分类(category)来说,必定会调用此方法,而且 load 方法不会被类自动继承, 每一个类中的 load 方法都不需要像 viewDidLoad 方法一样调用父类的方法
  • 而且是程序启动时,优先加载完所有类的 +load()方法,就算没有导入头文件,只要存在工程中会自动调用,这就是 +load()方法的神奇之处,那篇文章中,作者有几个地方说的是有些不正确的。
并没有导入头文件,依然会执行

Paste_Image.png

Paste_Image.png

解决方案

Snip20161111_3.png

Snip20161111_4.png

Snip20161111_5.png

这里需要说一下,并不用导入两个 对应的头文件也可。

注意事项
  • 与其他方法不同,load方法不参与覆写机制
  • +load方法实现得精简一些,有助于保持应用程序的响应能力
  • +initialize方法 ,它是“惰性”调用的,也就是说,只有当程序用到了相关的类时,才会调用。因此,如果某个类一直都没有使用,那么其initialize方法就一直不会运行。这也就等于说,应用程序无须先把每个类的initialize都执行一遍,这个算是 +load方法的补充了。
  • +initialize方法 对于每个类来说在整个app的生命周期里都只会执行一次,不管之后调用多少次,也就只执行一次,这个和 +load方法的特性是一样的**
  • +initialize方法 和 +load方法 对于单个类来说,写在类别中的话, +load方法 只会被调用一遍,而 +initialize方法 的调用次数会和整个工程中对应的这个类的文件个数一致(有多少个对应的类,在这个类被调用到时,这个类的类别中的+initialize方法会被调用多少次)

我阅读的那篇文章的链接

我的另一篇有关+load 方法的文章

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016.11.11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言:
  • 场景:
  • 思路
  • 解决方案
    • 注意事项
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档