应用升级问题

Mic*_*ker 3 iphone ios

我正在尝试为我的应用程序写一个重要的升级.升级是如此重要,我实际上从头开始编写代码,新版本中没有包含任何原始代码库.我只是从旧版本复制了*-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)
Run Code Online (Sandbox Code Playgroud)

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

有没有人对此有所了解?

Dun*_*age 6

这听起来像是一个NIB缓存问题(错误结束"......在Interface Builder文件中").当我重命名NIB时,我已经看到了类似的问题,而不是在代码中的某个地方纠正它,但后来惊讶地发现错误的名称仍然有效,因为它会出现NIB缓存.不是直接并行,但它说明了应用程序数据被缓存超出代码的当前构建的点,并且在您的错误的情况下,它指的是接口构建器,因此可能是感兴趣的NIB Cache.

通常,执行"干净构建"可以解决此问题,但如果您完全从头开始,则没有任何遗留构建文件夹内容,因此这似乎不是问题.因此,一种可能性是尝试自己手动清除NSCachesDirectory并查看是否可以解决问题.(任何人都可以确认NIB缓存存储在NSCachesDirectory中吗?)

其次,似乎从Xcode构建的过程可能无法直接镜像真正的AppStore升级,因为在实际的AppStore升级中除了用户数据目录之外整个应用程序被删除,因此应删除任何缓存的数据.关于这个问题的一个答案提出了一个有趣的想法,即构建应用程序然后通过iTunes安装可能会更接近真正的升级过程,从而告诉您问题是否存在于真正的升级中而不是从Xcode构建.值得研究,因为所有报告都是在更新时清除NIB缓存.