Objective-C でリフレクション
Objective-C をちょこちょこ使ったりしています。
ということで、勉強メモ。
#import <Cocoa/Cocoa.h> #import <stdio.h> @interface Hoge : NSObject { NSString *str; } @property (retain) NSString *str; @end @implementation Hoge @synthesize str; - (id)init { if (self = [super init]) { str = @"init"; } return self; } @end int main(void) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; Class clazz = NSClassFromString(@"Hoge"); id hoge = [[clazz alloc] init]; printf("%s\n", [[hoge str] UTF8String]); [hoge setStr:@"hogehoge"]; printf("%s\n", [[hoge str] UTF8String]); [pool release]; return 0; }
実行してみる。
lightning% gcc test.m -framework Cocoa && ./a.out init hogehoge