【问题标题】:An Objective-C message was sent to a deallocated object (zombie) at address一条 Objective-C 消息被发送到地址处的已释放对象(僵尸)
【发布时间】:2013-12-02 11:44:02
【问题描述】:

我在运行我的应用程序时收到以下错误消息:

"An Objective-C message was sent to a deallocated object (zombie) at address"

我一直在使用 XCode 4.6 开发从 iOS5 到 iOS7 的应用程序。为了尝试调试问题,我在 iOS 5 iPad 模拟器上使用 XCode 工具中的 Zombie 配置文件运行了该应用程序,发现以下代码行导致了错误:

NSMutableArray *resultArray = [dashboardService LstStatistics:1
                                      statisticsDisplayStatus:2
                                             dashboardSection:1
                                                   resultType:&successString];

为什么这行代码会导致消息发送到已释放对象(僵尸)错误?

【问题讨论】:

  • 显示你的 LstStatistics: 方法定义
  • 不能使用 Xcode 4.6 开发 iOS 7 应用,Xcode 4.6 只能链接到 6.1。这些应用程序将在 7 上运行,但无法访问任何 iOS 7 功能。
  • -(NSMutableArray *) LstStatistics:(int)groupInt_key statisticsDisplayStatus:(int)statisticsDisplayStatus dashboardSection:(int)dashboardSection resultType:(NSString **)resultType
  • 您看到的错误意味着您正在尝试调用已释放对象(又名僵尸)的方法。如果您问题中的那一行是 Instruments 说有错误的那一行,那么 dashboardService 很可能是僵尸。如果不查看所有代码,就不可能确切知道问题出在哪里,但请确保在调用方法之前正确保留/释放(或遵循正确的 ARC 程序)dashboardService。
  • 你当然不应该提交有僵尸问题的应用程序。

标签: ios objective-c ios5 ios-simulator instruments


【解决方案1】:

是的。你有一个错误。看起来在您尝试向它发送消息之前,dashboardService 被抛弃了。它是@property(strong) 吗?

【讨论】:

  • 我使用以下代码解决了这个问题.. -(void)dealloc{ self.tableView.dataSource = nil; }
【解决方案2】:

要做的事情:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-05
    • 1970-01-01
    • 2017-06-28
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多