Ios iPhone在背景层动画中崩溃

Ios iPhone在背景层动画中崩溃,ios,crash,calayer,nstimer,Ios,Crash,Calayer,Nstimer,我在修理一个讨厌的撞车故障时遇到了麻烦。我不知道如何准确地复制它, 但它只有在应用程序从后台出来后才会发生。我每两天以上就会发生一次车祸 在ApplicationIDBecomeActive:中,我重新启动了一个每0.4秒触发一次的计时器。它呼吁: - (void)rotate { [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.3]; self.transform = C

我在修理一个讨厌的撞车故障时遇到了麻烦。我不知道如何准确地复制它, 但它只有在应用程序从后台出来后才会发生。我每两天以上就会发生一次车祸

在ApplicationIDBecomeActive:中,我重新启动了一个每0.4秒触发一次的计时器。它呼吁:

- (void)rotate {

    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.3];
    self.transform = CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(-[LocationModel    instance].heading.magneticHeading));
    [UIView commitAnimations];

}
RotateView中还有drawRect,其主体位于碰撞报告中的第41行

- (void)drawRect:(CGRect)rect {

    [img drawInRect:rect]; // line 41
}
img是一个小型UIImage,它加载了名为的Images,并存储在ivar中

有什么建议吗?我对撞车报告几乎没有经验

谢谢


事故报告:

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x3001b482
Crashed Thread:  0

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libobjc.A.dylib                   0x333a6c98 objc_msgSend + 16
1   MyApp                           0x000259bc -[RotateView drawRect:] (RotateView.m:41)
2   UIKit                             0x34f4a9fe -[UIView(CALayerDelegate) drawLayer:inContext:] + 258
3   QuartzCore                        0x3058efa6 -[CALayer drawInContext:] + 86
4   QuartzCore                        0x3058ed24 _ZL16backing_callbackP9CGContextPv + 32
5   QuartzCore                        0x3058e776 CABackingStoreUpdate + 1226
6   QuartzCore                        0x3058e178 -[CALayer _display] + 724
7   QuartzCore                        0x3058de86 -[CALayer display] + 134
8   QuartzCore                        0x30582706 CALayerDisplayIfNeeded + 178
9   QuartzCore                        0x305821c6 CA::Context::commit_transaction(CA::Transaction*) + 214
10  QuartzCore                        0x30581fd0 CA::Transaction::commit() + 184
11  QuartzCore                        0x30580900 CA::Transaction::pop() + 120
12  QuartzCore                        0x3058087e +[CATransaction commit] + 22
13  UIKit                             0x35096bcc _UIWindowUpdateVisibleContextOrder + 136
14  UIKit                             0x35096c60 +[UIWindow _prepareWindowsForAppResume] + 4
15  UIKit                             0x3508f3de -[UIApplication _handleApplicationResumeEvent:] + 66
16  UIKit                             0x34f39e20 -[UIApplication handleEvent:withNewEvent:] + 2724
17  UIKit                             0x34f3920e -[UIApplication sendEvent:] + 38
18  UIKit                             0x34f38c4c _UIApplicationHandleEvent + 5084
19  GraphicsServices                  0x35873e70 PurpleEventCallback + 660
20  GraphicsServices                  0x35873efa PurpleEventSignalCallback + 10
21  CoreFoundation                    0x36126a72 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 6
22  CoreFoundation                    0x36128758 __CFRunLoopDoSources0 + 376
23  CoreFoundation                    0x361294e4 __CFRunLoopRun + 224
24  CoreFoundation                    0x360b9ebc CFRunLoopRunSpecific + 224
25  CoreFoundation                    0x360b9dc4 CFRunLoopRunInMode + 52
26  GraphicsServices                  0x35873418 GSEventRunModal + 108
27  GraphicsServices                  0x358734c4 GSEventRun + 56
28  UIKit                             0x34f63d62 -[UIApplication _run] + 398
29  UIKit                             0x34f61800 UIApplicationMain + 664
30  MyApp                           0x000026c4 main (main.m:14)
31  MyApp                           0x0000266c start + 32

EXC_BAD_ACCESS通常意味着您释放了一个对象,然后在以后调用该对象。尝试启用NSZombies来找到它。有很多关于如何做的教程。这里有一个开始

EXC\u BAD\u访问通常意味着您释放了一个对象,然后稍后调用该对象。尝试启用NSZombies来找到它。有很多关于如何做的教程。这里有一个开始

它已经启用。NSZombies会在崩溃日志中显示一些内容吗?启用了zombies后,我通常会收到类似“发送到解除分配实例0x80d7c00的消息”之类的消息,然后从那里开始。你也可以试试仪器,它们也有办法找到僵尸。我了解这些工具,但正如我上面提到的,崩溃很少发生。我无法通过设备进行调试。“无法通过设备进行调试”意味着我不能让设备连接两天。它已启用。NSZombies会在崩溃日志中显示一些内容吗?启用了zombies后,我通常会收到类似“发送到解除分配实例0x80d7c00的消息”之类的消息,然后从那里开始。你也可以试试仪器,它们也有办法找到僵尸。我了解这些工具,但正如我上面提到的,崩溃很少发生。我无法通过设备进行调试。“无法通过设备进行调试”意味着我不能让设备连接两天。