Есть вопрос. У меня есть подкласс UIView, который служит моим фоном, где я прокручиваю землю. Код работает очень хорошо, и в соответствии с инструментарием, я не пропускаю, и при этом растут мои выделенные и все еще живые объекты.
Я обнаружил, что в моем приложении добавление анимации в UIImageView, который принадлежит моему подклассу UIView, похоже, увеличивает мой счет сохранения и удаляет все анимации, когда я закончил, и сбрасывает его обратно.
У меня такой вопрос: когда вы добавляете анимацию в слой с ключом, я предполагаю, что, если в этой позиции входа уже есть использованная анимация в вспомогательном словаре, она освобождается и попадает в пул автоматического выпуска?
Например:
- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag
{
NSString *keyValue = [theAnimation valueForKey:@"name"];
if ( [keyValue isEqual:@"step1"] && flag ) {
groundImageView2.layer.position = endPos;
CABasicAnimation *position = [CABasicAnimation animationWithKeyPath:@"position"];
position.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
position.toValue = [NSValue valueWithCGPoint:midEndPos];
position.duration = (kGroundSpeed/3.8);
position.fillMode = kCAFillModeForwards;
[position setDelegate:self];
[position setRemovedOnCompletion:NO];
[position setValue:@"step2-1" forKey:@"name"];
[groundImageView2.layer addAnimation:position forKey:@"positionAnimation"];
groundImageView1.layer.position = startPos;
position = [CABasicAnimation animationWithKeyPath:@"position"];
position.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
position.toValue = [NSValue valueWithCGPoint:midStartPos];
position.duration = (kGroundSpeed/3.8);
position.fillMode = kCAFillModeForwards;
[position setDelegate:self];
[position setRemovedOnCompletion:NO];
[position setValue:@"step2-2" forKey:@"name"];
[groundImageView1.layer addAnimation:position forKey:@"positionAnimation"];
}
else if ( [keyValue isEqual:@"step2-2"] && flag ) {
groundImageView1.layer.position = midStartPos;
CABasicAnimation *position = [CABasicAnimation animationWithKeyPath:@"position"];
position.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
position.toValue = [NSValue valueWithCGPoint:endPos];
position.duration = 12;
position.fillMode = kCAFillModeForwards;
[position setDelegate:self];
[position setRemovedOnCompletion:NO];
[position setValue:@"step1" forKey:@"name"];
[groundImageView1.layer addAnimation:position forKey:@"positionAnimation"];
}
}
Эта цепочка анимаций бесконечно, и, как я уже сказал, она выполняет размещение созданного и живого объекта, не меняется. Я предполагаю, что каждый раз, когда я добавляю анимацию, освобождается та, которая существует в этой ключевой позиции.
Просто интересно, что я прав. Кроме того, я относительно новичок в Core Animation. Я попытался поиграть с повторным использованием анимации, но немного нетерпелив. Можно ли повторно использовать анимацию?
Спасибо!
Bryan