我正在学习ARC。我是对的,说,自动释放池中的对象只有在排出后才会删除,如果它们没有被保留?
答案 0 :(得分:0)
摘自Apple文档link
在引用计数环境中(与使用的环境相反) 垃圾收集),NSAutoreleasePool对象包含对象 已收到自动发布消息,并在排空时发送一个 向每个对象发布消息。因此,发送自动释放 而不是释放到对象延长该对象的生命周期 至少直到池本身耗尽(如果对象可能会更长 随后保留)。对象可以放在同一个池中 多次,在这种情况下,它会收到每个的发布消息 它被放入游泳池的时间。
注意:在ARC中,无法显式调用retain,release,retainCount或autorelease。
答案 1 :(得分:0)
是的,但是使用ARC,您通常不再处理autoreleasePools。有时在一个大循环中你可以使用@autoreleasepool
来释放对象,但是大多数情况下只保留对你想要的对象的强引用,以及对需要引用但希望阻止保留循环的对象的弱引用。 ARC将神奇地处理几乎所有其他事情。
答案 2 :(得分:0)
自动释放池中的对象只在排除后删除,如果没有保留?
是。 drain
减少自动释放池中对象的保留计数。如果这导致对象的保留计数降为零,则会像往常一样销毁它(然后显然不再存在于池中,因为它不再存在)。