通常,我们会调用@autoreleasepool
来消耗ARC中的自动释放池。
@autoreleasepool {
MyObject* object = [[MyObject alloc] init];
}
//do something
现在,当我致电MyObject
时,我希望所有MyFunction
个对象耗尽。
- (void)MyFunction
{
//[[NSAutoReleasePool defaultAutoReleasePool] drain];
//do something
}
我知道@autoreleasepool
创建了一个新池。我只想要MyFunction
排出默认池或当前池,这可以确保自动释放池中所有未使用的MyObject
在常见情况下耗尽。
这可能吗?
答案 0 :(得分:0)
@autoreleasepool { ... }
创建并删除(清除)新的自动释放池。您无法手动耗尽当前的自动释放池。有时可能需要释放池中的对象。在这种情况下,您应该使用嵌套池,例如:
@autoreleasepool { // Initial pool
...
for(...) {
@autoreleasepool {
// Using large amount in ARP
}
}
...
}
BTW:你的第一个列表中的对象不是ARP的成员,因为它是alloc
- init
调用的结果,因此你拥有它的所有权(参见{ {3}})。