2012-02-08 3 views
1

У меня есть эти строки в моем коде:iPhone - SetValue: forkey: не документированы

[defaults setValue:someValue forKey:@"someValue"]; 
[animationGroup setValue:@"someValue" forKey:@"someValue"]; // CAAnimationGroup 
NSString* animName = [theAnimation valueForKey:@"someValue"]; // CAAnimation 

Но чтение Apple, справочная документация:

Я не вижу никакой ссылки на эти методы, даже для синтаксического анализа иерархии или согласованных протоколов. Откуда они? Разрешено ли их использование?

ответ

4

Это методы кодирования по ключевому значению; если эти классы соответствуют стандарту Key-Value Coding для этих ключей, вы можете использовать их без проблем. Что касается Core Animation, то и CALayer, и CAAnimation соответствуют требованиям KVC, как указано в this programming guide. Более подробную информацию см. В неофициальном протоколе NSKeyValueCoding и Key-Value Coding Programming Guide.

+0

Вы знаете, почему NSKeyValueCoding Protocol не упоминается в разделе «Соответствует» этим классам? – Oliver

+3

'NSKeyValueCoding' - неофициальный протокол, который определяется как категории в' NSObject' (см. Заголовочный файл 'NSKeyValueCoding.h'), а не явные протоколы, поскольку реализация является необязательной. –

2

Как примечание стороны, которое меня смутило. Одна из ссылок выше, обеспечивает:

Оба CALayer и CAAnimation являются ключом-значением кодирования совместимого контейнера классов, что позволяет устанавливать значения для произвольных ключей. То есть, в то время как ключ «someKey» не объявленное свойство класса CALayer, однако вы можете установить значение для ключа «someKey»

означает, что вы можете смело отправлять КВЦ-как SetValue : forKey: и valueForKey: сообщения, и не нужно беспокоиться о том, что @ "someKey" не является реальным KVC-совместимым свойством (следовательно, "произвольными ключами"). Если вы попробуете это на других объектах, могут быть выбраны исключения. Я признаю, что не знаю, как легко узнать , если у других классов такое поведение, конечно, было бы полезно иметь это поведение бесплатно во многих других местах.

Смежные вопросы