ios - 从 [NSObject removeObserver :forKeyPath:]? 捕获异常是否安全

标签 ios objective-c cocoa key-value-observing nsnotificationcenter

我有一些代码大量使用 KVO,并且在多个地方有 addObserver:forKeyPath:removeObserver:forKeyPath:。该应用程序偶尔会崩溃并显示“无法删除关键路径的观察者。”

我想知道仅尝试/捕获异常以防止应用程序崩溃是否安全。我知道这不是处理 KVO 的最佳方法,但我需要争取一些时间才能清理代码。

最佳答案

异常,尤其是来自 Apple 内部 API 的异常,永远不应该被静静地捕获和忽略。在 Objective-C 中,异常通常会导致您的应用程序终止,这与捕获异常是开发的正常部分的其他语言和运行时(Java、.NET)不同。

如果您遇到崩溃,则说明某处存在错误,您需要修复它。由于进入不一致状态,吞下异常可能会产生非常糟糕的后果。不要这样做。

关于ios - 从 [NSObject removeObserver :forKeyPath:]? 捕获异常是否安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18270049/

相关文章:

ios - Xcode 11.2,Catalina和Flutter v1.9.1 + hotfix.6之后出现 Unresolved iOS构建错误

ios - 使用 CorePlot 框架时显示 int 值

objective-c - 转换从 View :toView:duration:options:completion: is not animating the transition

cocoa - 嵌套 AVMutableComposition

objective-c - 一个简单的 PDFKit 程序中奇怪的 EXC_BAD_ACCESS

ios - 围绕 CGContextRef 绘制以移除像素化

ios - 我需要在单个流媒体请求中使用 AFNetworking 将大量文件(最多 100 个)上传到服务器,这可以为我提供上传进度

iphone - 检查 NSFetchedResultsController 是否不返回任何对象

ios - 针对特定 UITableViewCell 中的特定 UILabel

iphone - 检查对象是否为 NSInteger