爲了避免模態行爲,我允許用戶中斷正在運行的CABasicAnimation
,並且在此應用程序的上下文中,用戶的操作需要一個新的狀態,其中現有的CALayers
應該不再存在。我沒有使用ARC(也許這是我的問題,但承受這個老派問題)。CAAnimation在發佈的CALayer上運行回調-Mac OS X
當用戶採取行動,爲一組的活躍CALayers
我這樣做:
for(CALayer *c in layerArray){
[c removeAllAnimations];
[c removeFromSuperlayer];
[c release];
}
[layerArray removeAllObjects];
(相信我,是好還是壞,這不是一個過度釋放CALayers
的)。然而,從該例程返回並將控制權交還給系統後,系統會調用內部OS例程run_animation_callbacks並崩潰,因爲它試圖將消息發送給殭屍 - 已被刪除併發布的CALayers
之一。爲什麼[c removeAllAnimations]
不足以告訴操作系統停止在該對象上運行回調?
謝謝。