Как примечание, которое меня также смутило. Одна из ссылок выше обеспечивает:
И CALayer, и CAAnimation являются контейнерами, совместимыми со значением ключа
классы, позволяющие устанавливать значения для произвольных ключей. То есть пока
ключ «someKey» не является объявленным свойством класса CALayer,
однако вы все равно можете установить значение для клавиши «someKey»
означает, что вы можете безопасно отправлять KVC-подобные setValue: forKey: и valueForKey: сообщения и не должны беспокоиться о том факте, что @ "someKey" не является реальным KVC-совместимым свойством (отсюда и "произвольные ключи"). Если вы попробуете это на других объектах, могут возникнуть исключения. Я признаю, что не знаю, как легко выяснить, есть ли у других классов такое поведение, во многих других местах было бы полезно иметь такое поведение бесплатно.