有没有人对崩溃日志发生的原因有任何见解?该应用程序记录用户所在的位置.因此它在Info.plist中设置了UIBackgroundModes的位置以继续在后台获取位置更新.根据日志,10分钟后似乎崩溃了.
Incident Identifier: 4BA294E8-0DDF-4EC2-812A-20394F758A7F
CrashReporter Key: 59997a4e160853691bc673802439c8c4b9ca7ba3
Hardware Model: iPhone3,1
Process: MyMapApp [1234]
Path: /var/mobile/Applications/826E35FE-F6B7-477E-943E-CE18D0D03145/MyMapApp.app/MyMapApp
Identifier: MyMapApp
Version: ??? (???)
Code Type: ARM (Native)
Parent Process: launchd [1]
Date/Time: 2011-03-02 13:25:05.228 -0600
OS Version: iPhone OS 4.2.1 (8C148)
Report Version: 104
Exception Type: 00000020
Exception Codes: 0x8badf00d
Highlighted Thread: 0
Application Specific Information:
MyMapApp[1234] has active assertions beyond permitted time:
{(
<SBProcessAssertion: 0x63a07a0> identifier: CoreLocationRegistration process: MyMapApp[1234] permittedBackgroundDuration: 600.000000 reason: finishTask owner pid:1234 preventSuspend preventIdleSleep ,
<SBProcessAssertion: 0xa095050> identifier: CoreLocationBackgroundClient …Run Code Online (Sandbox Code Playgroud) 我的应用程序有时会在后台崩溃并显示以下崩溃日志:
Nov 7 12:33:31 iPad backboardd[29] <Warning>: MyApp[3096] has active assertions beyond permitted time:
{(
<BKProcessAssertion: 0x14680c60> identifier: Called by MyApp, from -[AppDelegate applicationDidEnterBackground:] process: MyApp[3096] permittedBackgroundDuration: 180.000000 reason: finishTask owner pid:3096 preventSuspend preventIdleSleep preventSuspendOnSleep
)}
Run Code Online (Sandbox Code Playgroud)
通过其他问题我发现崩溃消息表明我没有正确结束任务,所以当它的时间到期时,操作系统结束了它并使我的应用程序崩溃.
所以我添加了一些NSLog:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
[self saveContext];
[Settings setCallLock:YES];
[self saveStuff];
if ([self isBackgroundTaskNeeded])
{
UIApplication* app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[self pauseDownloads];
NSLog(@"Debug - Ending background task %d",bgTask);
[app endBackgroundTask:bgTask];
NSLog(@"Debug - Background task %d ended",bgTask);
bgTask …Run Code Online (Sandbox Code Playgroud)