autorelasepool
MRC:
mrc环境下我们需要遵守谁创建谁释放的原则,但由于某些特殊场景因此我们需要使用到自动释放池,比如或个A方法返回了a1对象,按装谁创建谁释放的原则,我们应该在A方法说将创建的a1对象进行release操作,但是这样的话返回的a1对象就无法使用了。因此我们需要使用autorelase进行延迟释放。系统会帮我们在进行一次runloop操作后进行释放操作。
ARC:
arc环境下,系统帮我们自动管理内存。在arc环境下我们可以把更多的精力放在程序的优化上。arc实现原理是在苹果在编译的过程中,在合适的位置自动添加释放操作。编译时采用LLVM编译器。
编译器的执行操作大致分为三步:
前端:词法分析、语法分析、语义分析、生成中间码
优化器:中间代码优化
后端:生成机器码
oc编译:
预处理:将import\宏定义进行预处理(简单来说就是把import的文件导入进去,把宏处理给进行替换操作)
词法分析:将代码进行拆分进行分析
语法分析:将代码生成语法树进行分析
编译器编译:编译成中间代码
后端:生成目标代码\汇编\链接其它动态库静态库\编译成合适苹果架构的代码
网友评论