ios大神之路程序员

autorelease 面试题小结

2016-05-06  本文已影响232人  amberling

最近在夯实基础,复习了 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 的吗?

答:是的

上一篇下一篇

猜你喜欢

热点阅读