美文网首页ios大神之路程序员
autorelease 面试题小结

autorelease 面试题小结

作者: amberling | 来源:发表于2016-05-06 14:48 被阅读232次

    最近在夯实基础,复习了 autorelease 内容,根据 autorelease 特性及注意点,自己总结了一部分面试小知识点,希望可以帮助大家,欢迎指正和补充,共同进步

    autorelease 面试题小结

    什么是 autorelease?

    一种支持自动引用计数的内存管理方式,只要给对象发送 autorelease 消息,就会将对象放入自动释放池(@autoreleasepool)中,当自动释放池被销毁时,会对池中所有对象做一次 release 操作


    1,向对象发送 autorelease  消息后会改变对象的引用计数吗?

    答:不会

    解释:autorelease 的本质是将release消息延迟,只有在release消息触发完成后,引用计数才会-1

    2,向对象发送 autorelease 消息返回什么?

    答:对象本身

    eg:

    Person *p = [[Person alloc] init];

    p = [p autorelease];

    3,自动释放池释放时,会销毁所有池中的对象吗?

    答:不会

    原因:

    对象只有在retain-count 为0时才会被释放,如果自动释放池中的对象还有强指针指向该对象,则不会被释放

    4,一个程序运行的过程中只能产生一个自动释放池吗?

    答:可以有多个自动释放池

    解释:

    在程序运行过程中会创建多个自动释放池,以栈的形式存在(先进后出),发送 autorelease 消息时,会将这个对象放到栈顶的释放池中

    5,Foundation 框架中用类工厂方法创建的对象,都适合 autorelease 的吗?

    答:是的

    相关文章

      网友评论

      本文标题:autorelease 面试题小结

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