autorelease 面试题小结

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


图片发自简书App

什么是 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 的吗?

答:是的

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,211评论 30 472
  • 1.OC里用到集合类是什么? 基本类型为:NSArray,NSSet以及NSDictionary 可变类型为:NS...
    轻皱眉头浅忧思阅读 1,394评论 0 3
  • 转:http://www.cocoachina.com/programmer/20151019/13746.htm...
    Style_伟阅读 1,331评论 0 3
  • 内存管理 简述OC中内存管理机制。与retain配对使用的方法是dealloc还是release,为什么?需要与a...
    丶逐渐阅读 2,008评论 1 16
  • 11月3日,一站式品牌资源交易平台新媒矿正式启用四个顶级中文域名:新媒矿.中国、新媒矿.com、新媒矿.cn、新媒...
    新媒矿阅读 178评论 0 0