Xcode(4.2.1)根据项目的旧状态创建二进制文件。 例如:我过去声明并使用了属性“myProperty”。但后来我删除了这个属性并删除了使用该属性的所有代码。当我构建并运行App崩溃时,说“MyClass与密钥myProperty不符合密钥值编码”。 类似的事情在过去出现,而不仅仅是代码。我将项目中的图像文件替换为另一个具有相同名称的图像。在项目的文件夹中,定义了新的图像文件。但是,在构建和运行后,它仍然显示旧图像。 我已经尝试过的:Just Build,然后运行;关闭并重新开放项目;关闭并重新启动Xcode;重启Mac。 有什么建议吗?
抱歉。该属性仍然作为xib中的引用存在。这就是问题所在。
答案 0 :(得分:2)
只是为了澄清:这可能是最常见的问题之一!当您看到" MyClass不是密钥值编码兼容的密钥myProperty"在发布时,这是一个提示,你有一个名为" myProperty"在你的nib文件中。好吧,这不是一个非常好的错误信息,但你只需要了解这意味着什么。这意味着因为当应用程序启动并且nib加载并且nib加载机制尝试将该名称与实例中的实例变量或访问者匹配时,使用键值编码,它无法找到它并且您得到它崩溃和那条消息。
有时会发生这种情况,因为您组建了插座,后来又更改了代码。
有时会发生这种情况,因为所有者对象是错误的类,如This class is not a key value coding-compliant或What does this mean? "'NSUnknownKeyException', reason: … this class is not key value coding-compliant for the key X"
(如果你真的认为Xcode正在根据项目的旧状态创建二进制文件,请按照我的说明完全清理目标:How to Empty Caches and Clean All Targets Xcode 4)