美文网首页iOS内容总结
iOS面试复习2——ARC

iOS面试复习2——ARC

作者: 木子草水莎 | 来源:发表于2017-09-19 23:22 被阅读0次

    一、ARC下@property修饰符

    strong : 用于OC对象, 相当于MRC中的retain

    weak : 用于OC对象, 相当于MRC中的assign

    assign : 用于基本数据类型, 跟MRC中的assign一样

    二、ARC中内存管理

    只要还有一个强指针变量指向对象,对象就会保持在内存中

    1.ARC下单对象内存管理

    1)ARC下,所有的指针都是强指针

    2)ARC, A对象想拥有B对象, 那么就需要用一个强指针指向B对象

    3)A对象不用B对象了, 什么都不需要做, 编译器会自动帮我们做

    2.ARC下多对象内存管理(strong ,weak, assign)

    // 在ARC中保存一个对象用strong, 相当于MRC中的retain

    @property(nonatomic, strong)Dog *dog;

    // 在ARC中如果保存对象不要用assign, 用weak

    // assign是专门用于保存基本数据类型的, 如果保存对象用weak

    @property(nonatomic, weak)Person *owner;

    3.ARC循环引用问题

    ARC和MRC一样, 如果A拥有B, B也拥有A, 那么必须一方使用弱指针

    也就是说 一端用strong ,一端用weak

    4.ARC的原理

    当ARC开启时,编译器将自动在代码合适的地方插入retain, release和autorelease,而作为程序猿,完全不需要担心编译器会做错(除非开发者自己错用ARC了)。

    5.ARC优点

    完全消除了手动管理内存的烦琐, 让程序猿更加专注于app的业务

    基本上能够避免内存泄露

    有时还能更加快速,因为编译器还可以执行某些优化

    三、ARC和MRC混编

    1.ARC模式下如何兼容非ARC的类?

    答:找到project->targets->Bulid Phases->Compiles Sources->找到相关文件右击右边Compiler Flags添加相关代码

    给相关文件添加一端代码,

    转变为非ARC -fno-objc-arc

    转变为ARC的, -f-objc-arc (不常用)

    四、如何操作Xcode将MRC转ARC?

    答:Edit->Convert->To Objective ARC

    相关文章

      网友评论

        本文标题:iOS面试复习2——ARC

        本文链接:https://www.haomeiwen.com/subject/bjtnsxtx.html