O que exatamente removeOnCompletion = NO faz?
CAAnimation fornece a propriedade removedOnCompletion cujo padrão é YES.
Vamos reconhecer estes fatos:
A) Core Animation afeta apenas a Árvore de Apresentação, mas não a Árvore Modelo. Quando uma animação é concluída, você acaba vendo o que está definido na Árvore Modelo. Você pode definir um fillMode como kCAFillModeBoth, por exemplo, que trocará o valor da Árvore de Apresentação para a Árvore Modelo depois que a animação for concluída. Isso faz com que sua animação não seja revertida (o que provavelmente é o que você deseja).
B) Eu fiz um experimento. removedOnCompletion = NO seráNÃO têm o mesmo efeito que kCAFillModeBoth ou kCAFillModeForwards. Para ser mais preciso: não tem absolutamente nenhum efeito na aparência do resultado quando a animação é concluída. Se ele é "removido" ou não, parece não afetar a Árvore de Apresentação.
Para explicar o que o RemoveOnCompletion realmente faz, a documentação é muito fraca nesse sentido. Eu não entendo. Alguém pode explicar o que exatamente seria removido e qual é o benefício de não removê-lo?
Meu palpite é que a Apple está falando sobre o próprio objeto animador, que é adicionado à camada com -addAnimation: forKey: ... mas novamente: qual é o sentido de mantê-lo por perto?