com.apple.main-thread EXC_BAD_ACCESS KERN_INVALID_ADDRESS(来自iOS 8.x的NSTimer中)

com.apple.main-thread EXC_BAD_ACCESS KERN_INVALID_ADDRESS(来自iOS 8.x的NSTimer中)

问题描述:

Crazylytics发生了崩溃。com.apple.main-thread EXC_BAD_ACCESS KERN_INVALID_ADDRESS(来自iOS 8.x的NSTimer中)

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 defaultCenter] addObserver:self selector:@selector(UIApplicationDidBecomeActive:) 
              name:UIApplicationDidBecomeActiveNotification object:nil]; 

Crashlytics标题HomeViewController.m line 179 -[HomeViewController UIApplicationDidBecomeActive:]在该行

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

初始化NSNotificationCenter我没有看到这个项目的任何[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidBecomeActiveNotification object:nil];。刚才我补充说,但是,我想确认是因为多个addObserverNSTimer初始化而发生崩溃?

更新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。我无法理解Crashlytics崩溃细节比较Xcode-organizer

+0

您添加此BecomeActive obeserver?在上面的问题中提到的'HomeViewController'' viewWillAppear'中提到了观察者初始化代码中的 – CodeChanger

+0

。 – user3589771

+0

是否有任何其他viewController在你的应用程序或你只是在家庭ViewController和得到这个崩溃? – CodeChanger

你不能把观察者码在viewWillAppear中,因为代码调用毁伤时间:

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