В обработчике событий touchesMoved
... почему происходит разрыв:
CALayer *slayer = (CALayer*)[[self.layer sublayers] objectAtIndex:0];
slayer.position=CGPointMake(x,y);
, но это прекрасно работает:
CALayer *slayer = (CALayer*)[[self.layer sublayers] objectAtIndex:0];
[CATransaction begin]; // temporarily disable layer animations
[CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions];
slayer.position=CGPointMake(x,y);
[CATransaction commit];
для подкласса CALayer
, нопохоже, что оба они работают для экземпляра самого класса CALayer
?
Подробнее ...
К сожалению, приложение работало нормально под iOS 4.3, и теперь генерируется тот же код EXC_BAD_ACCESS
когда я пытаюсь анимировать его параметры.
Я понимаю, что EXC_BAD_ACCESS
генерируется, когда вы отправляете сообщение объекту, который был удален, поэтому, пытаясь исправить эту проблему, я позаботилсячтобы все слои были сохранены и сохранены в кэше, чтобы они оставались до тех пор, пока я не очистил кэш.Я также проверяю счетчик сохранности рассматриваемого слоя, и во время вызова он нарушает 3
, поэтому он является допустимым слоем.Я попытался запустить с NSZombieEnabled
, но он выдает те же результаты и никаких других сообщений об ошибках.
Есть что-то, что я пропускаю?Что-то изменилось между iOS4.3 и iOS5?Что вызывает мой предположительно нормальный слой, приводящий к сбою Core Animation?
fwiw: я использую Xcode 4.2, в июне 2009 года, Macbook Pro.