2011-12-13 112 views
1

Xcode(4.2.1)根据项目的旧状态创建二进制文件。 例如:我在过去声明并使用了属性“myProperty”。但后来我删除了这个属性并删除了使用该属性的所有代码。当我构建并运行应用程序崩溃时,说“MyClass不是密钥myProperty的关键值编码”。 类似的事情出现在过去,而不仅仅是代码。我用另一个同名的图像替换了我的项目中的图像文件。在项目的文件夹中,定义了新的图像文件。但是,构建并运行后,它仍然显示旧图像。 我已经试过了:只需构建,然后运行;关闭并重新开放项目;关闭并重新启动Xcode;重新启动Mac。 有什么建议吗?Xcode根据项目的旧状态创建二进制文件

对不起。该属性仍然作为xib中的引用存在。这是问题所在。

回答

2

只是为了澄清:这可能是最常见的问题之一!如果在启动时看到“MyClass不是密钥值编码 - 密钥myProperty”,则表明您的nib文件中有一个名为“myProperty”的插座。好的,这不是一个很好的错误信息,但你只需要知道这就是它的意思。这意味着,因为当应用程序启动并且nib加载并且nib加载机制试图将该名称与活动实例中的实际实例变量或访问器进行匹配时,使用键值编码,它不会找到它,并且会导致崩溃和那个消息。

有时发生这种情况是因为您形成了插座,然后又改变了您的代码。

有时是因为所有者对象是错误的类,如This class is not a key value coding-compliantWhat 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