I found that CALayer and CAAnimation don't only extend the NSKeyValueCoding protocol as described in Core Animation Extensions To Key-Value Coding, but also offer dynamic resolution for unimplemented property accessors. For example:
@interface DotLayer : CALayer
@property (nonatomic, retain) id dot;
@end
@implementation DotLayer
@dynamic dot;
@end
Simply with a property declaration and stating it is @dynamic, I can access dot property without implementing its accessors:
DotLayer *layer = [DotLayer layer];
NSLog(@"layer responds to dot: %d", [layer respondsToSelector:@selector(dot)]);
layer.dot = nil;
NSLog(@"%@", [layer dot]);
After further investigation, I found this dynamic resolution is done by CALayer and CAAnimation's special implementation of +resolveInstanceMethod:.
I saw usage of this dynamic resolution in ImageBrowser sample code of WWDC 2010, but I can not find any documentation stating this feature. So I'm wondering:
Is this dynamic resolution a prescribed behavior that I can make use of in my own code?