Я обнаружил, что CALayer и CAAnimation не только расширяют протокол NSKeyValueCoding, как описано в Базовые расширения анимации, до кодирования значения ключа , но также предлагают динамическое разрешение для не реализованных средств доступа к свойствам. Например:
@interface DotLayer : CALayer
@property (nonatomic, retain) id dot;
@end
@implementation DotLayer
@dynamic dot;
@end
Просто с объявлением свойства и указанием @ dynamic я могу получить доступ к свойству dot без реализации его методов доступа:
DotLayer *layer = [DotLayer layer];
NSLog(@"layer responds to dot: %d", [layer respondsToSelector:@selector(dot)]);
layer.dot = nil;
NSLog(@"%@", [layer dot]);
После дальнейшего изучения я обнаружил, что это динамическое разрешение выполняется CALayer и специальной реализацией CAAnimation + resolInstanceMethod: .
Я видел использование этого динамического разрешения в образце кода ImageBrowser WWDC 2010, но не могу найти никакой документации, подтверждающей эту функцию. Вот мне и интересно:
Является ли это динамическое разрешение предписанным поведением, которое я могу использовать в своем собственном коде?