当您在 ObjC 块中捕获异常时@catch
,该异常对象的生命周期是什么?我知道我可以在块内安全地使用它,但是如果我想在块之后再次使用它怎么办,像这样?
NSException * exception = nil;
@try {
// do something risky
} @catch(NSException * e) {
exception = e;
}
if (exception) {
NSLog(@"Caught exception: %@", exception);
}
我可以安全地将引用存储到另一个本地吗?retain, autorelease
为了安全起见,我应该这样做吗?我可以保留它并无限期地持有它吗?
(如果我分配给本地,或者稍后保留并使用,它似乎工作正常,但是文档并没有真正讨论这个对象在所有权方面“来自”哪里,或者它是否特殊,所以我一直在寻找更清晰。)