我正在尝试调试我从Flurry Analytics获得的崩溃日志,但我看不到问题。这是堆栈跟踪:
0 CoreFoundation 0x181f36530 <redacted> + 132
1 libobjc.A.dylib 0x192f0c0e4 _objc_exception_throw + 60
2 CoreFoundation 0x181e248e8 -[__NSPlaceholderDictionary initWithObjects:forKeys:count:] + 420
3 CoreFoundation 0x181e3ff44 +[NSDictionary dictionaryWithObject:forKey:] + 60
4 memono 0x10005f96c -[AppDelegate iCLoudSyncCheckNotificationSync:] + 1244
5 CoreFoundation 0x181edcddc <redacted> + 20
6 CoreFoundation 0x181e1b370 __CFXNotificationPost + 2060
7 Foundation 0x182d3f520 -[NSNotificationCenter postNotificationName:object:userInfo:] + 72
8 memono 0x10005c02c -[AppDelegate syncWithCompletion:] + 660
9 libdispatch.dylib 0x19355d994 <redacted> + 24
10 libdispatch.dylib 0x19355d954 <redacted> + 16
11 libdispatch.dylib 0x19356220c __dispatch_main_queue_callback_4CF + 1608
12 CoreFoundation 0x181eee2ec <redacted> + 12
13 CoreFoundation 0x181eec394 <redacted> + 1492
14 CoreFoundation 0x181e191f4 _CFRunLoopRunSpecific + 396
15 GraphicsServices 0x18b23b6fc _GSEventRunModal + 168
16 UIKit 0x1867aa10c _UIApplicationMain + 1488
17 memono 0x100099b7c -[UpdatePromtRateViewController .cxx_destruct] + 220
18 libdyld.dylib 0x19358aa08 <redacted> + 4
我还遇到了一些其他的崩溃,它始终以[UpdatePromtRateViewController ...]开头这只是一个viewController我在应用更新后显示一次,以促使用户对应用进行评级。有一个按钮可以关闭我的应用程序并直接通过App Store应用程序中的应用程序。可能是因为它不是“真正的崩溃”而且我得到这个崩溃日志只是因为应用程序立即被这个按钮结束了? 还是与那本字典有关?也许我放入零物件?我可以通过做一些事情来解决这个问题 - 用“如果对象不是零”声明来围绕词典吗?
我在堆栈跟踪读取方面不是很好,如果有人能给我一个暗示这个崩溃日志试图告诉我的内容会很好!?
感谢您的帮助!
修改
Flurry分析没有给出其他消息......我正在做的是再次设置所有本地通知,以便将徽章图标编号排序......它工作正常,奇怪的是[UpdatePromtRateViewController]总是出现在崩溃日志中,我只使用了一次,因此应该有其他崩溃日志 - [UpdatePromtRateViewController],因为我在第一次应用程序启动时只使用一次,然后再也没有...这是代码我在那里做什么
NSEntityDescription *entityDescriptionDelegate = [NSEntityDescription entityForName:@"Entity" inManagedObjectContext:self.managedObjectContext];
NSFetchRequest *requestData = [[NSFetchRequest alloc] init];
[requestData setEntity:entityDescriptionDelegate];
NSError *error;
NSArray *objectsArray = [self.managedObjectContext executeFetchRequest:requestData error:&error];
for (NSManagedObject *object in objectsArray) {
if (!([object valueForKey:@"alarmDate"] == nil)) {
_badge += 1;
UILocalNotification *alarm = [[UILocalNotification alloc] init];
alarm.applicationIconBadgeNumber = _badge; // 1;
alarm.applicationIconBadgeNumber = 0;
alarm.timeZone = [NSTimeZone defaultTimeZone];
NSString *alarmTitleString = [[NSString alloc] initWithString:[object valueForKey:@"alarmTitle"]];
alarm.alertBody = alarmTitleString;
alarm.fireDate = [object valueForKey:@"alarmDate"];
alarm.soundName = UILocalNotificationDefaultSoundName;
NSDictionary *userInfo = [NSDictionary dictionaryWithObject:[object valueForKey:@"alarmID"] forKey:@"ID"];
alarm.userInfo = userInfo;
[[UIApplication sharedApplication] scheduleLocalNotification:alarm];
[object setValue:@"yes" forKey:@"alarmSet"];
[UILocalNotification setBadge];
alarm.applicationIconBadgeNumber = 0;
答案 0 :(得分:2)
此方法崩溃:iCLoudSyncCheckNotificationSync:
并且,正如您所推测的那样,很可能是因为您正在为密钥传递nil
。
崩溃跟踪意味着在C ++析构函数中需要进行大量繁重的工作。这肯定会失败。但崩溃痕迹可能是错误的;从析构函数到UIApplicationMain()的调用似乎有点奇怪。
无论如何,是的,这是真正的崩溃,即使它发生在应用程序终止,你应该找出原因并解决它。特别是,如果您的应用程序正在终止以响应&#34;退出&#34;像按钮的按下,它真的不应该触发云同步或其他慢速操作。