尽量使用模块方式与多类建立复合关系

include把整个文件包含进来。

import是在此基础上增加了防止重复编译的预编译宏。

具体如下:

ifndef CommonHeaders_pch

define CommonHeaders_pch

endif

import虽然能够防止在循环引用的情景下出现重复引用的问题,但是在非循环引用的情景下仍然不能解决在整个工程被多个不同的.m文件引用的问题。这样同样的代码被多次包含致使整个工程的代码有了额外的增长从而导致编译时间变长。

预编译头文件,预编译的意思就是不占用编译时间,在编译之前解决。
主要方式是PCH文件,不过这会引出几个问题。
1、有些.m文件并不需要某些头文件,那就没有必要把该头文件暴露给它,我认为这是最大的问题。
2、书上说它难以定位错误,这一点我持怀疑态度,因为我没有想到出现此种弊端的情景。

module模块
首先书中引入了一个没有被解释的概念——自包含
我在读到这样的文字的时候我就想骂作者,别老说一些似是而非的概念,你要明确表达你的意思好不好。
自包含:字面意思,自己包含自己,那就是说不包含别人呗,就是独立的。
通过这篇文章我并不知道模块到底是个什么东西,因为书中没有给出明确完整的定义,反正它带来的主要好处就是如下几点:
1、编译速度比上面那你种方式都快。
2、它能帮你自动连接库。
3、不会引入多余的库。
其他的都说得太简单了。

现在版本的XCode是默认开始module模式的,不过也可以自己手动设置。
是否自动链接framework也是可控的。

具体写法是把#import <MapKit>改成@import MapKit,不过其实也不用,因为编译器会帮你做这件事。

总结一下作者的意思就是你赶紧用module吧,你还在等啥。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在2013年的苹果年度大会上,苹果在oc的性能改进上大大的变化之一就是加入了模块(Modules)。 文件编译问题...
    花生儿阅读 445评论 2 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,524评论 25 708
  • 【微公益】【691】【每日经典,伴您早起】【20170316孟子165】 曹交问曰:“人皆可以为尧舜,有诸?”孟子...
    北冥_鲲阅读 207评论 0 2
  • 青春的开始是一起挥霍 青春的过程是喜怒哀乐 青春的回忆是洋溢幸福 青春的结束是告白友谊 青春只有一次 且永远不死
    是苦瓜吗阅读 235评论 0 0