com.apple.main-thread EXC_BAD_ACCESS KERN_INVALID_ADDRESS (a



崩溃了。

Crashed: com.apple.main-thread
0  libobjc.A.dylib                0x197e37bdc objc_msgSend + 28
1  Foundation                     0x1881192c8 -[NSCFTimer initWithFireDate:interval:target:selector:userInfo:repeats:] + 140
2  Foundation                     0x188123d3c +[NSTimer(NSTimer) scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:] + 140
3  RV PetSafety                   0x1000fd2a0 -[HomeViewController UIApplicationDidBecomeActive:] (HomeViewController.m:179)
4  CoreFoundation                 0x1872dc1e0 __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 20
5  CoreFoundation                 0x18721b370 _CFXNotificationPost + 2060
6  Foundation                     0x188116cc0 -[NSNotificationCenter postNotificationName:object:userInfo:] + 72
7  UIKit                          0x18bb664c0 -[UIApplication _stopDeactivatingForReason:] + 464
8  UIKit                          0x18bd77818 -[UIApplication _handleNonLaunchSpecificActions:forScene:withTransitionContext:] + 2664
9  FrontBoardServices             0x18f56d640 __31-[FBSSerialQueue performAsync:]_block_invoke + 28
10 CoreFoundation                 0x1872ee124 __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 20
11 CoreFoundation                 0x1872ed22c __CFRunLoopDoBlocks + 312
12 CoreFoundation                 0x1872eb850 __CFRunLoopRun + 1756
13 CoreFoundation                 0x1872191f4 CFRunLoopRunSpecific + 396
14 GraphicsServices               0x1903835a4 GSEventRunModal + 168
15 UIKit                          0x18bb4a784 UIApplicationMain + 1488
16 RV PetSafety                   0x1001161e8 main (main.m:14)
17 libdyld.dylib                  0x198492a08 start + 4

其中我的代码:

- (void)UIApplicationDidBecomeActive:(NSNotification *)notification {
if([updateTimer isValid]) {
[updateTimer invalidate];
}
updateTimer = [NSTimer scheduledTimerWithTimeInterval:refreshInterval
target:self
selector:@selector(refreshData)
userInfo:nil
repeats:YES];
}

每当我的应用程序处于活动状态时,我都会更新我的NSTimer时间。我需要调用 API 时间段。我在这种方法上崩溃了。在上面的选择器方法refreshData具有 API 调用。在viewWillAppear初始化NSNotificationCenter

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(UIApplicationDidBecomeActive:)
name:UIApplicationDidBecomeActiveNotification object:nil];

崩溃的标题HomeViewController.m line 179 -[HomeViewController UIApplicationDidBecomeActive:]在那行

updateTimer = [NSTimer scheduledTimerWithTimeInterval:refreshInterval
target:self
selector:@selector(refreshData)
userInfo:nil
repeats:YES];

我在这个项目中没有看到任何[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidBecomeActiveNotification object:nil];。刚才我补充了一下,但是,我想确认崩溃是由于多个addObserver还是NSTimer初始化而发生的?

更新 16/08/2017:

几次出现此错误,并且两个相同的iOS版本8.x

iOS版本: 8.4.1 (12H321(

型号: iPhone 5c (型号 A1456, A1532(

更新 17/08/2017:

第一次崩溃发生在3 个多月前,第二次崩溃发生在 2 周以上。我无法在崩溃选项卡中获取崩溃详细信息Xcode-organizer。我只在Crashlytics看到过其他一些崩溃,而不是在Xcode-organizer。与Xcode-organizer相比,我无法理解Crashlytics崩溃细节

你不能把观察者代码放在viewWillAppear上,因为代码会调用残缺的时间:

[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(UIApplicationDidBecomeActive:)
name:UIApplicationDidBecomeActiveNotification
object:nil];

相关内容

最新更新