objective-c - 由于 Objective-C 中的异常,我应该如何处理可能的内存泄漏?

标签 objective-c exception-handling

我有一个分配对象然后在最后释放它的方法。在这两者之间,该方法调用另一个可能引发异常的方法,并且该异常可能会被调用我的方法的方法捕获。如果发生这种情况,该对象将永远不会被释放(或者会吗?)。我应该如何防止这种情况发生?

最佳答案

您始终可以在调用可能抛出异常的方法之前自动释放它 - 这样您就可以确保无论是否抛出异常,它都会被释放。

如果出于某种原因这不明智,您可以在 @finally block 中进行发布 1 :

A @finally block contains code that must be executed whether an exception is thrown or not.

请注意,使用不带 @catch@finally block 是可以的:

Resource *resource = [[Resource alloc] init];
@try {
    [obj someMethodThatMayThrow];
}
@finally {
    [resource release];
}

关于objective-c - 由于 Objective-C 中的异常,我应该如何处理可能的内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3081344/

相关文章:

iphone - 回收单元格时的 UITableView 单元格布局

ios - YTPlayerView - 对 YTPlayerView 的自动旋转支持

c++ - 如何从 CloseHandle() 捕获异常

java - 在 Java 中尝试/捕获

ios - showBluetoothAccessoryPickerWithNameFilter:completion:取消按钮

ios - Xcode-ld : library not found for -lPods

ios - 升级到 iOS8 后,UITableView didSelectRowAtIndexPath 不工作

c# - 未处理的异常和 werfault

c++ - boost::exception 和 std::exception 之间的关系

java - 嵌套异常与现代(Java SE 7)异常