MRC/ARC随笔

2019-08-05  本文已影响0人  羞涩的老湿鸡

autorelasepool

MRC:
    mrc环境下我们需要遵守谁创建谁释放的原则,但由于某些特殊场景因此我们需要使用到自动释放池,比如或个A方法返回了a1对象,按装谁创建谁释放的原则,我们应该在A方法说将创建的a1对象进行release操作,但是这样的话返回的a1对象就无法使用了。因此我们需要使用autorelase进行延迟释放。系统会帮我们在进行一次runloop操作后进行释放操作。
ARC:
    arc环境下,系统帮我们自动管理内存。在arc环境下我们可以把更多的精力放在程序的优化上。arc实现原理是在苹果在编译的过程中,在合适的位置自动添加释放操作。编译时采用LLVM编译器。
    编译器的执行操作大致分为三步:
    前端:词法分析、语法分析、语义分析、生成中间码
    优化器:中间代码优化
    后端:生成机器码

oc编译:
    预处理:将import\宏定义进行预处理(简单来说就是把import的文件导入进去,把宏处理给进行替换操作)
    词法分析:将代码进行拆分进行分析
    语法分析:将代码生成语法树进行分析
     编译器编译:编译成中间代码   
    后端:生成目标代码\汇编\链接其它动态库静态库\编译成合适苹果架构的代码


    

上一篇下一篇

猜你喜欢

热点阅读