【发布时间】:2009-09-29 22:10:03
【问题描述】:
我正在使用此代码制作动画
CATransition *animation = [CATransition animation];
[animation setDuration:0.45f];
[animation setType:kCATransitionPush];
[animation setSubtype:kCATransitionFromRight];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault]];
[[theWindow layer] addAnimation:animation forKey:@""];
//[animation release];
我想我应该在完成动画对象后 [释放],但如果我这样做了,我会在 gdb 中得到一个 EXC_BAD_ACCESS
Program received signal: “EXC_BAD_ACCESS”.
(gdb) where
#0 0x93c38688 in objc_msgSend ()
#1 0x30506515 in NSPopAutoreleasePool ()
#2 0x305359f0 in __NSFireDelayedPerform ()
#3 0x302454a0 in CFRunLoopRunSpecific ()
#4 0x30244628 in CFRunLoopRunInMode ()
#5 0x32044c31 in GSEventRunModal ()
#6 0x32044cf6 in GSEventRun ()
#7 0x309021ee in UIApplicationMain ()
...
所以我猜我不应该发布动画。
谁能解释为什么会这样?我习惯于发布东西,这种情况是该规则的某种例外。有什么想法吗?
【问题讨论】:
标签: iphone objective-c cocoa-touch memory-management