Кроме того, я нигде не смог найти протокол, который мой контроллер представления принимает для методов делегата CAAnimation. Я думал, что все объекты делегата должны были принять протокол?
Делегирование и формальные протоколы являются ортогональными понятиями:
Формальные протоколы являются довольно недавним дополнением к языку программирования Objective-C - фактически они были введены после CoreAnimation (ранее LayerKit).
Способ действия до введения @protocol
- и способ QuartzCore
все еще работает - объявлял категорию на NSObject
как так называемый "Неформальный протокол". Лишь недавно Apple начала формализовать их - см. NSURLConnection
для такого примера, который получил свои протоколы делегатов с текущими выпусками iOS / OS X.
После этого краткого упоминания истории, теперь к вашей проблеме:
Если то, что вы показываете, является дословной копией вашего кода, то это не сработает. На самом деле, если вы не используете ARC, вам очень повезло, что приведенный выше код не дает сбой из-за EXC_BAD_ACCESS
. Вы должны полностью установить значение animation
на что-то значимое, прежде чем пытаться отправлять на него сообщения ...