如果我进行干净的构建和全新的安装,我的应用程序可以正常安装和运行,但是,如果我安装之前发布的版本,然后用新版本覆盖该版本,则会在第一次运行时崩溃。
重现步骤:
1. 在 iPhone 4 上安装并运行我应用程序的先前版本(1.4)。 2. 关闭应用程序并终止进程。 3. 检出最新版本(2.0)。 4. 删除构建目录。 5. 安装并运行。 6. 崩溃。
我正在运行 Xcode 3.2.5,4.2 SDK。我的 iPhone 4 是 4.2.1。
如果您查看崩溃日志,似乎我的 NIB 中有一个错误的连接,但是没有任何对象尝试连接到我的 AppController 中的 'view' 属性。有时会发生完全相同的崩溃,只是会说“此类不符合键值编码-compliant 的 activityIndicator”。这也很奇怪,因为 grep 已经确认我的项目中没有叫做 activityIndicator 的东西。
我的三个问题是:
1. 我的应用程序为什么会崩溃? 2. 是否有人有更多的调试想法?我已经没有办法修复它了。 3. 当 Xcode 在您的设备上安装构建时,可能会采取捷径,而在从商店安装应用程序时不会采取这些捷径。是否有人知道是否是这种情况,如果是,是否知道一种模拟确切应用商店安装过程的方法,以便我可以确保不会为所有升级者杀死我的应用程序?
崩溃日志:
重现步骤:
1. 在 iPhone 4 上安装并运行我应用程序的先前版本(1.4)。 2. 关闭应用程序并终止进程。 3. 检出最新版本(2.0)。 4. 删除构建目录。 5. 安装并运行。 6. 崩溃。
我正在运行 Xcode 3.2.5,4.2 SDK。我的 iPhone 4 是 4.2.1。
如果您查看崩溃日志,似乎我的 NIB 中有一个错误的连接,但是没有任何对象尝试连接到我的 AppController 中的 'view' 属性。有时会发生完全相同的崩溃,只是会说“此类不符合键值编码-compliant 的 activityIndicator”。这也很奇怪,因为 grep 已经确认我的项目中没有叫做 activityIndicator 的东西。
我的三个问题是:
1. 我的应用程序为什么会崩溃? 2. 是否有人有更多的调试想法?我已经没有办法修复它了。 3. 当 Xcode 在您的设备上安装构建时,可能会采取捷径,而在从商店安装应用程序时不会采取这些捷径。是否有人知道是否是这种情况,如果是,是否知道一种模拟确切应用商店安装过程的方法,以便我可以确保不会为所有升级者杀死我的应用程序?
崩溃日志:
2011-02-10 06:58:32.115 TheApp[132:307] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<AppController 0x14d680> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key view.'
*** Call stack at first throw:
(
0 CoreFoundation 0x33ac0987 __exceptionPreprocess + 114
1 libobjc.A.dylib 0x3347b49d objc_exception_throw + 24
2 CoreFoundation 0x33ac0705 -[NSException dealloc] + 0
3 Foundation 0x3367db4f -[NSObject(NSKeyValueCoding) setValue:forUndefinedKey:] + 182
4 Foundation 0x3367d03b _NSSetUsingKeyValueSetter + 90
5 Foundation 0x3367eda3 -[NSObject(NSKeyValueCoding) setValue:forKey:] + 194
6 Foundation 0x33630b17 -[NSObject(NSKeyValueCoding) setValue:forKeyPath:] + 130
7 UIKit 0x3224c60f -[UIRuntimeOutletConnection connect] + 66
8 CoreFoundation 0x33a63fc7 -[NSObject(NSObject) performSelector:] + 18
9 CoreFoundation 0x33a6cd51 -[NSArray makeObjectsPerformSelector:] + 388
10 UIKit 0x3224b577 -[UINib instantiateWithOwner:options:] + 586
11 UIKit 0x3224cb39 -[NSBundle(UINSBundleAdditions) loadNibNamed:owner:options:] + 92
12 UIKit 0x3209e871 -[UIApplication _loadMainNibFile] + 96
13 UIKit 0x3209a1fd -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 180
14 UIKit 0x3206648b -[UIApplication handleEvent:withNewEvent:] + 1114
15 UIKit 0x32065ec9 -[UIApplication sendEvent:] + 44
16 UIKit 0x32065907 _UIApplicationHandleEvent + 5090
17 GraphicsServices 0x33b0ef03 PurpleEventCallback + 666
18 CoreFoundation 0x33a556ff __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 26
19 CoreFoundation 0x33a556c3 __CFRunLoopDoSource1 + 166
20 CoreFoundation 0x33a47f7d __CFRunLoopRun + 520
21 CoreFoundation 0x33a47c87 CFRunLoopRunSpecific + 230
22 CoreFoundation 0x33a47b8f CFRunLoopRunInMode + 58
23 UIKit 0x32099309 -[UIApplication _run] + 380
24 UIKit 0x32096e93 UIApplicationMain + 670
25 TheApp 0x00002781 main + 88
26 TheApp 0x00002724 start + 40
)
--
我应该补充一点,这个应用程序在执行到我的任何代码之前就崩溃了,也就是说,application:didFinishLaunchingWithOptions:
和applicationDidFinishLaunching:
从未被调用。