重点1:arc 是在编译阶段还是运行阶段被管理释放的?
是由编译器自动进行内存管理,编译器能完全清楚目标对象,并能立刻释放那些不再被使用的对象。apple llvm 编译器。
重点2:编译器>>GNU,GCC,clang,llvm。
GNU:计划本来是想创建一个完全兼容unix的自由软件环境,1.因为unix有一部分源码没有公开,希望发展一套完全公开的系统来取代unix ,但是后来独缺操作系统核心。GUN计划自己的内核hurd在2013年都没有稳定版本。linux后来出现,但是linux并不是gnu计划的一部分,应用了gnu计划软件,比如GCC编译器非常好。
GCC:是一套GNU开发的编程语言编译器,GCC原本只能处理C语言,后来逐渐扩展,后来可以处理C++后来处理Object-c java ada 等等语言,GCC成了跨平台软件的编译器的首选,GCC产生一样的中介码,因为中介码在各个其他平台上使用GCC编译。后来llvm和clang的崛起,clang作为编译器的前端,llvm作为后端,它的目标是提供一个GNU(gcc)的替代品,clang在内存和速度方面提高,mac之前的cocoa框架便是用GCC编译的,所以ios与mac os都是默认使用的GCC编译器(现在是clang与llvm)clang是编译器的前段,主要输出代码对应的抽象语法,并将代码编译成(llvm bitcode).llvm编译成机器语言。android的系统层因为是linux内核,自然也是GCC编译的,但是android的app因为是运行在Dalvik虚拟机,所以用的不是GCC。
LLVM:是一个编译器后端,利用虚拟技术,创造出编译时期,链结时期,运行时期以及“闲置时期”的优化。
编译器前端的任务是进行:语法分析,语义分析,生成中间代码(intermediate representation )。在这个过程中,会进行类型检查,如果发现错误或者警告会标注出来在哪一行
编译器后端:会进行机器无关的代码优化,生成机器语言,并且进行机器相关的代码优化。
重点3:执行xcode build的流程做了什么?编译的时候注意下状态栏里面发生的变化。
1.链接需要的Framework,例如Foundation.framework,AFNetworking.framework,ALiPay.fframework。
2.编译xib文件。
3.拷贝xib,图片等资源文件到结果目录。
4.编译ImageAssets。
5.处理info.plist。
6.拷贝Swift标准库。
7.创建.app文件和对其签名。
8.生成dsym app实际执行的二进制文件中,是通过地址来调用方法的。通过dsym文件可以由地址映射到具体的函数。
重点4:在内部打包测试的时候,如何提高项目编译速度?
1.首先看到编译时间的对比。终端输入命令,打开xcode
defaults write com.apple.dt.Xcode ShowBuildOperationDuration YES
2.
(1)forward declaration @class通常放在.h文件中, 主要作用在于提升编译性能
(2)对常用的工具类进行打包(frame/.a) 如果打包成framework或者静态库,这样编译的时候,这部分代码就不需要重新编译了。
(3)常用的头文件要放到预编译文件里。xcode里面的pch文件是预编译文件。prefix header:
(4)debug模式下,不生成dsym文件,会提高速度。
Build Settings -> Build Options -> Debug Information Format中,置为了DWARF,如果选为DWARF则不会产生dSYM文件,必须选择DWARF with dSYM File才会生成符号表文件。
(5) Build Active Architecture Only-------可以只编译当前版本。高版本的xcode已经打开。
(6)编译器优化-------。高版本的xcode已经打开。
(7)为了方便还可以使用shell 自动打包脚本,直接发布到fir-----
详细 地址链接:http://www.jianshu.com/p/989dc82db5d0
重点5:MRC引用计数,nscopying,深拷贝,浅拷贝,ARC?
1.引用计数思考方式:1.生成对象2.持有对象3.释放对象4.废弃对象。
2.GNUStep alloc retail release dealloc autorelease nsmutableArrays的实现https://opensource.apple.com/ 软件公开源码,
读:Objective-C高级编程 iOS与OS X多线程和内存管理
参考:http://blog.csdn.net/itianyi/article/details/43057279