2011-10-21 61 views
3

我正在尝试为我的应用程序写入重要升级。升级非常重要,我实际上已经从头开始编写代码,新版本中没有包含任何原始代码库。我只是复制旧版本的* -Info.plist,并更新了Bundle Version标识符。应用程序升级问题

我在尝试从较旧版本(当前App Store)版本升级时遇到问题。当我通过XCode中的设备上启动应用程序,我给出的消息:

错误启动可执行文件“应用程序名” 错误启动远程程序:无法获得处理任务699

如果我试图终止之后再次运行应用程序,我显示在输出窗口如下:

2011-10-21 15:40:27.996 Application Name[713:707] Unknown class Application_Name_NewAppDelegate in Interface Builder file. 
2011-10-21 15:40:28.013 Application Name[713:707] Unknown class myTabBarController in Interface Builder file. 
2011-10-21 15:40:28.019 Application Name[713:707] Unknown class SelectViewController in Interface Builder file. 
2011-10-21 15:40:28.037 Application Name[713:707] Unknown class AddDateViewController in Interface Builder file. 
2011-10-21 15:40:28.047 Application Name[713:707] Unknown class DisplayViewController in Interface Builder file. 
2011-10-21 15:40:28.063 Application Name[713:707] Unknown class AboutViewController in Interface Builder file. 
2011-10-21 15:40:28.125 Application Name[713:707] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UICustomObject 0x16cae0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key window.' 
*** First throw call stack: 
(0x3200c8bf 0x31d7c1e5 0x3200c5f5 0x35ba1333 0x35ba0e33 0x35b7af19 0x31f6b803 0x31f6c491 0x32d384bf 0x32d39bb9 0x32c72a45 0x32afc227 0x32af6313 0x32ac4921 0x32ac43bf 0x32ac3d2d 0x3206fe13 0x31fe0553 0x31fe04f5 0x31fdf343 0x31f624dd 0x31f623a5 0x32af5457 0x32af2743 0x21b9 0x2178) 

这些类实际上是当前版本的一部分,在新版本中不包含在所有我正试图升级到。所以在我看来,升级失败的原因不明。

有没有人有任何亮光流露在此?

+0

任何人有任何想法? –

+0

这是否会发生每次或只有一次?我也在运行一个新版本时遇到了一些问题,但是它非常罕见,并且第二次启动它运行良好 – 2011-10-27 19:46:00

回答

6

这听起来像是一个NIB缓存问题(错误结束“...在Interface Builder文件中”)。当我重命名NIB时,我曾经看到过类似的问题,但没有在代码的某个地方纠正它,但却惊讶地发现由于NIB缓存的存在,不正确的名称仍然有效。不是直接的并行,但它说明了应用程序数据被缓存到当前的代码构建之外,并且在错误的情况下,它指的是接口构建器,因此可能是有趣的NIB缓存。

通常情况下,做一个“干净的构建”将解决这个问题,但如果你已经完全从头开始,你没有任何遗留构建文件夹的内容,所以这似乎不会成为问题。因此可能的一种可能是尝试手动清除NSCachesDirectory并查看是否可以解决问题。 (任何人都可以确认NIB Cache是​​否存储在NSCachesDirectory中?)

其次,从Xcode构建过程似乎不会直接反映真正的AppStore升级,就像在实际的AppStore升级中整个应用程序被删除一样除了用户数据目录之外,所以应该删除任何缓存的数据。 One answer on this question建议有趣的想法,建立你的应用程序,然后通过iTunes安装可能会更密切地反映真正的升级过程,从而告诉你问题是否会存在于一个真正的升级,而不是从Xcode的建设。值得关注的是,因为所有报告都表明NIB缓存在更新时被清除。

+0

感谢您的帮助邓肯,我会在今晚看看您的建议 –

0

假设你正在使用的XCode 4,在Project Navigator中,选择你的项目,那么你的目标。选择构建阶段,并验证:

你所有的碎粒列在“复制包资源”。

所有'.m'文件都列在'编译源'下。

(如果您使用的Xcode 3,你可以找到这些在Project Navigator本身在“目标”)

有时笔尖文件没有放置在构建阶段一些奇怪的原因。

如果这样不能解决问题,请在Interface Builder中为每个具有问题的笔尖单击文件所有者,选择身份检查器并检查该类是否设置为适当的笔尖。

+0

项目中不存在nib文件,这就是为什么我觉得很奇怪,我得到的引用 –

+0

你完全删除了以前的项目吗?确保它也从User/Library/Developer/Xcode/DerivedData&Snapshots中移除。还要确保它实际上是在一个新的项目文件夹中创建的,因为它可能有旧文件,例如本地git存储库等。 – 2011-11-01 12:44:34

+0

它是一个全新的项目,只是使用与以前版本相同的捆绑ID。 –