我们知道,在ARC模式下,__autoreleasing修饰符要和@autoreleasepool块配合使用,在@autoreleasepool块执行完的时候,会往修饰为__autoreleasing的对象发送release消息。
假设有这么一个方法:
-(BOOL)performOperationWithError:(NSError * __autoreleasing *)error {
...
//如果发生了错误
*error = [[NSError alloc] initWithDomain:myAppDomain code:userCode userInfo:nil];
return NO;
}
如果调用这个方法的时候并没有手动写上@autoreleasepool块,那么方法内部这个autorelease的*error,它对应的@autoreleasepool块应该是哪个呢?
是main函数里的@autoreleasepool块?还是另外有隐藏的@autoreleasepool块?