首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >主线程EXC_BAD_ACCESS KERN_INVALID_ADDRESS (来自iOS 8.x的NSTimer )

主线程EXC_BAD_ACCESS KERN_INVALID_ADDRESS (来自iOS 8.x的NSTimer )
EN

Stack Overflow用户
提问于 2017-08-09 05:47:21
回答 1查看 971关注 0票数 0

从破碎机上摔下来的。

代码语言:javascript
复制
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

我的代码:

代码语言:javascript
复制
- (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调用。在NSNotificationCenter上初始化viewWillAppear

代码语言:javascript
复制
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(UIApplicationDidBecomeActive:)
                                             name:UIApplicationDidBecomeActiveNotification object:nil];

在这一行上的碰撞学标题HomeViewController.m line 179 -[HomeViewController UIApplicationDidBecomeActive:]

代码语言:javascript
复制
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.4.1 (12H 321) 型号: iPhone 5c (Model A1456,A1532)

更新17/08/2017:

第一次坠机发生在三个多月前,第二次发生在两周以上。我无法在Xcode-organizer崩溃选项卡中获得崩溃详细信息。我只在Crashlytics,没有在Xcode-organizer上看到过一些其他的崩溃。我无法理解Crashlytics崩溃的细节与Xcode-organizer相比

EN

回答 1

Stack Overflow用户

发布于 2018-03-08 02:27:50

您不能将观察者代码放在viewWillAppear中,因为代码会调用残废时间:

代码语言:javascript
复制
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(UIApplicationDidBecomeActive:)
                                             name:UIApplicationDidBecomeActiveNotification
                                           object:nil];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45582532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档