@interface Dog : NSObject
@end
@implementation Dog
- (id)valueForUndefinedKey:(NSString *)key
{
if ([key isEqualToString:@"quacks"])
return YES;
}
@end
上記のような何かをKVCを活用して書くことができます:実行時のプロトコル準拠を保証する方法は?
しかし[[Dog new] valueForKey:@"quacks"]; // YES
、にObjCランタイムは同じKVCメカニズムを活用し、実行時にアヒルのプロトコルに準拠するために使用することができますか?
@protocol Duck <NSObject>
@optional
@property (readonly) BOOL quacks;
@end
id<Duck> dug = (id<Duck>)[Dog new];
dug.quacks; // YES
'return YES' YESはオブジェクトではありません – user102008