我在 App Store 上的最新版本有一个奇怪的问题。一些用户报告升级应用程序后启动时应用程序崩溃,并且仅在 iOS6 上发生。但是,如果用户删除应用程序并重新安装,则不会发生崩溃。
我检查了手机上的崩溃日志并看到了这个错误。
OS Version: iOS 6.0 (10A403)
Exception Type: EXC_BAD_ACCESS (SIGBUS)
Exception Codes: EXC_ARM_DA_ALIGN at 0x2fe6f785
Crashed Thread: 0
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 My App 0x00074ace +[aClass sharedNormalImages] (aClass.m:34)
1 dyld 0x2fe79628 ImageLoaderMachO::doInitialization(ImageLoader::LinkContext const&) + 16
2 dyld 0x2fe76a3a ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&, unsigned int, ImageLoader::InitializerTimingList&) + 382
3 dyld 0x2fe76874 ImageLoader::runInitializers(ImageLoader::LinkContext const&, ImageLoader::InitializerTimingList&) + 36
4 dyld 0x2fe6dd04 dyld::initializeMainExecutable() + 172
5 dyld 0x2fe7085c dyld::_main(macho_header const*, unsigned long, int, char const**, char const**, char const**, unsigned long*) + 1804
6 dyld 0x2fe6d32c dyldbootstrap::start(macho_header const*, int, char const**, long, macho_header const*, unsigned long*) + 604
7 dyld 0x2fe6d064 _dyld_start + 60
与最近的版本相比,sharedNormalImages 函数根本没有改变,它只是一个返回这样一个数组的函数。
static NSArray *normalImages = nil;
+ (NSArray *)sharedNormalImages
{
if (normalImages == nil) {
normalImages = @[@"xx.png", @"xy.png", @"yx.png", @"yy.png"];
}
return normalImages;
}
我真的不知道会发生什么。我尝试用旧版本安装,然后用 Xcode 替换为新版本。问题也不会发生。所以我根本无法在我的环境中复制它。这太奇怪了。
编辑
不确定它是如何相关的,但我在设备控制台上看到了此错误消息。
Oct 19 12:36:16 iPhone My App[210] <Error>: objc[210]: Class is implemented in both /var/mobile/Applications/A5EC61E7-7DBA-4FA5-A5FE-6D49EAFAD6EB/My App.app/My App and /var/mobile/Applications/A5EC61E7-7DBA-4FA5-A5FE-6D49EAFAD6EB/My App.app/My App. One of the two will be used. Which one is undefined.
Oct 19 12:36:16 iPhone kernel[0] <Debug>: launchd[210] Builtin profile: container (sandbox)
Oct 19 12:36:16 iPhone kernel[0] <Debug>: launchd[210] Container: /private/var/mobile/Applications/A5EC61E7-7DBA-4FA5-A5FE-6D49EAFAD6EB (sandbox)
Oct 19 12:36:16 iPhone ReportCrash[211] <Notice>: Formulating crash report for process My App[210]
Oct 19 12:36:16 iPhone com.apple.launchd[1] (UIKitApplication:com.acompany.myapp[0x813f][210]) <Warning>: (UIKitApplication:com.acompany.myapp[0x813f]) Job appears to have crashed: Bus error: 10
Oct 19 12:36:16 iPhone com.apple.launchd[1] (UIKitApplication:com.acompany.myapp[0x813f]) <Notice>: (UIKitApplication:com.acompany.myapp[0x813f]) Throttling respawn: Will start in 2147483647 seconds
Oct 19 12:36:16 iPhone backboardd[52] <Warning>: Application 'UIKitApplication:com.acompany.myapp[0x813f]' exited abnormally with signal 10: Bus error: 10
Oct 19 12:36:16 iPhone ReportCrash[211] <Error>: libMobileGestalt copySystemVersionDictionaryValue: Could not lookup ReleaseType from system version dictionary
Oct 19 12:36:16 iPhone ReportCrash[211] <Notice>: Saved crashreport to /var/mobile/Library/Logs/CrashReporter/My App_2012-10-19-123616_iPhone.plist using uid: 0 gid: 0, synthetic_euid: 501 egid: 0
仅供参考,我将应用程序图标更新为在最新更新中“预呈现”,但我认为这不会导致崩溃。