@ cocoafan .. Я понял в своем исчерпывающем комментарии ... что приведенный мною пример может не сработать, если вы на самом деле не реализуете свой ответ GENIUS, как я выбрал ... Чтобы сделать этот умопомрачительно блестящим (такжекак просто) магия, еще более универсальная и полезная… Я просто создал базовый класс, как вы описали, но вместо того, чтобы классифицировать (это так называется?) NSApplication
, я сделал это на NSObject
.Полный пример ниже…
@interface AZClassProxy : NSObject
@end
@interface NSObject (AZClassProxy)
- (id)classProxy;
@end
…
@implementation AZClassProxy
- (id) valueForUndefinedKey:(NSString*)k { return NSClassFromString(k); }
@end
@implementation NSObject (AZClassProxy)
- (id) classProxy { static AZClassProxy *prx = nil; return prx = prx ?: AZClassProxy.new; }
@end
Правка… Через 2 дня мой простой ум сложился, пытаясь вспомнить, кто это работает, ипочему это так чудесноЯ буду продолжать публиковать здесь, поскольку я должен делать вещи, чтобы напомнить себе о том, что это такое, и почему я должен заботиться .. Итак, основной пример ..
NSObject *WHATEVS = NSObject.new;
NSLog(@"%@", [[WHATEVS.classProxy valueForKey:@"NSColor"] redColor]);
LOG NSCalibratedRGBColorSpace 1 0 0 1