【问题标题】:Exception Handling issue with "message sent to deallocated instance"“消息发送到已释放实例”的异常处理问题
【发布时间】:2012-01-06 11:05:04
【问题描述】:

我已启用 NSZombie,我收到消息为“已发​​送到已释放实例的消息”,我知道这是内存管理问题,但为什么我的 try catch 或未捕获异常处理技术适用于 Zombies,为什么它们没有被捕获在大括号中,有什么方法可以阻止我的应用程序在运行时崩溃,提前感谢任何解决方案

【问题讨论】:

  • 没有代码,没有错误。没有错误,没有解决方案
  • 阻止应用崩溃的唯一正确方法是修复错误,而不是隐藏错误。
  • 显然存在一个问题,即在 iOS 5 模拟器上的某些情况下 try/catch 无法正常工作。据报道,它在硬件上运行良好,而且我没有在 iOS 4 上看到问题的证据。

标签: iphone objective-c xcode exception memory-management


【解决方案1】:

有一种方法可以阻止应用在运行时崩溃:

不要向已释放的实例发送消息:)

更有帮助的是,与其试图隐藏错误,不如将更多精力放在寻找其根本原因上,否则您不知道它对您的应用程序有什么其他副作用,也不知道它将来会造成什么麻烦。

如果您在问题中添加一些代码和堆栈跟踪/控制台输出,我们可以帮助您找到问题。

【讨论】:

  • 老兄,你能告诉我为什么 try catch 不能抓住它们吗,任何链接来阅读和理解真正的概念:)
  • 因为它不是objective-c异常——没有人抛出任何东西;您访问了一个不允许您的应用访问的内存位置,这是一个低级问题,因此 iOS 只会结束您的应用(出现分段错误 (SIGSEGV) - en.wikipedia.org/wiki/Segmentation_fault
【解决方案2】:

请参阅此链接以实现 try catch 异常。我认为您正在以某种错误的方式实施 try catch.... exception-handling-in-objective-c

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-14
    • 2011-06-16
    • 1970-01-01
    相关资源
    最近更新 更多