2011-03-18 63 views
0
self.mLineAnimation = [CABasicAnimation animationWithKeyPath:@"path"]; 
mLineAnimation.fromValue = (id)mStartPath; 
mLineAnimation.toValue = (id)mEndPath; 
mLineAnimation.duration = 2; 
mLineAnimation.repeatCount = 0; 
[mLineAnimation setDelegate:self]; 
mLineAnimation.removedOnCompletion = NO; 
mLineAnimation.fillMode = kCAFillModeForwards; 
mLineAnimation.timingFunction = [CAMediaTimingFunction 
            functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
[mShapeLayer addAnimation: mLineAnimation forKey: @"animateLine"]; 

請注意,我設置委託以實現animationDidStop。 我的動畫在表格視圖單元格中運行。 現在,當我在表格中快速滾動時,應用程序會與EXC_BAD_ACCESS一起崩潰。 如果我沒有設置委託,應用程序不會崩潰。你可以請領導在這裏做什麼?堆棧跟蹤是下一個:創建動畫的對象已被破壞後(該對象「自我」指的是在「self.mLineAnimation」)CABasicAnimation with delegate crash

#0 0x0168ea63 in objc_msgSend 
#1 0x056ff0a0 in ?? 
#2 0x00ee36cb in run_animation_callbacks 
#3 0x00ee3589 in CA::timer_callback 
#4 0x0150dfe3 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ 
#5 0x0150f594 in __CFRunLoopDoTimer 
#6 0x0146bcc9 in __CFRunLoopRun 
#7 0x0146b240 in CFRunLoopRunSpecific 
#8 0x0146b161 in CFRunLoopRunInMode 
#9 0x01cd9268 in GSEventRunModal 
#10 0x01cd932d in GSEventRun 
#11 0x003da42e in UIApplicationMain 
#12 0x00002580 in main at main.m:14 

回答

1

動畫停止。動畫然後嘗試消息被破壞的對象。

使用NSZombieEnabled運行您的可執行文件,這會將objc_MsgSend中的崩潰轉化爲Objective-C異常,從而破壞調試器。

+0

然後,你可能會發現你需要取消dealloc中的動畫。 – 2011-03-18 13:46:24