Чтобы избежать модального поведения, я разрешаю пользователю прерывать работу CABasicAnimation
, а в контексте этого приложения действие пользователя вызывает новое состояние, в котором существующий CALayers
больше не должен существовать. Я не использую ARC (и, возможно, это моя проблема, но несут этот вопрос старой школы).CAAnimation запускает обратные вызовы в выпуске CALayer - Mac OS X
Когда пользователь выполняет действия, для группы активного CALayers
Я делаю это:
for(CALayer *c in layerArray){
[c removeAllAnimations];
[c removeFromSuperlayer];
[c release];
}
[layerArray removeAllObjects];
(Поверьте мне, что, к лучшему или к худшему, это не более-релиз CALayers
). Однако, возвращаясь из этой процедуры и отдавая управление системе, система вызывает внутреннюю операционную систему run_animation_callbacks и сбои, поскольку она пытается отправить сообщения зомби - одному из CALayers
, который был удален и выпущен. Почему нет [c removeAllAnimations]
, чтобы сообщить ОС о прекращении выполнения обратных вызовов на этом объекте?
Спасибо.