模糊的 NSZombie 控制台日志

Posted

技术标签:

【中文标题】模糊的 NSZombie 控制台日志【英文标题】:Obscure NSZombie console log 【发布时间】:2011-12-31 03:55:12 【问题描述】:

我尝试在 google 上搜索,但在试图弄清楚这意味着什么时几乎没有得到任何结果。我的控制台正在记录:

objc[17048]: Class _NSZombie_GEOLatLng is implemented in both ?? and ??. One of the two will be used. Which one is undefined.
objc[17048]: Class _NSZombie_GEOLatLng is implemented in both ?? and ??. One of the two will be used. Which one is undefined.
objc[17048]: Class _NSZombie_GEOLocation is implemented in both ?? and ??. One of the two will be used. Which one is undefined.
objc[17048]: Class _NSZombie_GEOLocation is implemented in both ?? and ??. One of the two will be used. Which one is undefined.

任何人以前见过这种情况,或者知道这意味着什么,是什么原因造成的,以及是否有问题?

【问题讨论】:

你有没有包含文本 GEOLatLng 子字符串的方法?分享您的相关代码(如果有)?如果您正在使用它进行测试,请尝试不使用 NSZombieEnabled 进行测试。 【参考方案1】:

我见过。具体来说,在 OS X 上 - 但原因应该是相同的。 GEOLocation(和其他)在加载到进程中的两个图像中定义。

如果那是您编写的类,则该类的符号在多个目标文件中定义(尽管可能是链接器错误……),在链接库、加载的包或某些组合中 - 当代码可能被加载时动态的。

如果它不是您编写(或合成)的类,请向该类的创建者提交错误。

该类也可能在您的应用中定义,也可能在链接库中定义。在这种情况下,您需要更改班级名称。

这绝对是个问题。该类(具有该名称)被加载到 objc 运行时两次,并且由于 objc 使用平面命名空间,因此无法保证在创建实例时将返回哪个实现。

在这种情况下,该类存在于系统框架中,所以...将它发送给错误报告者 - 它应该尽快修复。

【讨论】:

GEOLocation 和 GEOLatLng 不在我定义的任何类中。看起来它们不在我正在使用的任何外部包(SBJson 和 ASIHTTP)中。这是否意味着它一定是链接器错误?乍一看,链接似乎没有任何问题。你对我应该在哪里看有什么建议吗? @Mason 是的。最后,我说它们是由系统框架定义/使用的。您应该向 Apple 提交错误。让他们知道您链接的库、产生此错误的操作系统版本以及重现它所需的任何其他步骤。【参考方案2】:

这是在构建方案中启用僵尸警告时出现的无害警告。你可以忽略它。

【讨论】:

【参考方案3】:

我收到这条晦涩的消息,并注意到一个 NIB 已从项目中删除,但代码仍在使用它。您可能需要检查是否已从捆绑包中删除了仍在使用的资源。

【讨论】:

以上是关于模糊的 NSZombie 控制台日志的主要内容,如果未能解决你的问题,请参考以下文章

这个 NSZombie 错误消息是啥意思?

小车速度模糊控制系统

自适应模糊控制——直接自适应模糊控制

模糊控制——基本原理

模糊控制——理论基础

自适应模糊控制——基于模糊补偿的机械手自适应模糊控制