私はある程度有能な Ruby プログラマーです。昨日、ついに Apple の Cocoa フレームワークを試してみることにしました。ObjC の方法で物事を見るのを手伝ってください。
私は頭を動かそうとしていobjc_allocateClassPair
ますobjc_registerClassPair
. 私の目標は、いくつかのクラスを動的に生成し、他のクラスと同じように使用できるようにすることです。これは Obj C で機能しますか?
class を割り当てて登録A
すると、呼び出し時にコンパイル エラーが発生します[[A alloc] init];
( と表示されます'A' Undeclared
)。A
ランタイムのメソッドを使用してのみインスタンス化できますobjc_getClass
。私のようにコンパイラA
にメッセージを伝えて渡す方法はありますNSString
か? コンパイラフラグか何か?
10 ほどの他のクラス ( B
、C
、…) があり、すべて同じスーパークラスがあります。[A classMethod]
を必要とせずに、コード ( 、[B classMethod]
、…)で直接メッセージを送信したいobjc_getClass
。ここであまりにも動的にしようとしているのですか、それとも単に実装を台無しにしているのでしょうか? こんな感じ…</p>
NSString *name = @"test";
Class newClass = objc_allocateClassPair([NSString class], [name UTF8String], 0);
objc_registerClassPair(newClass);
id a = [[objc_getClass("A") alloc] init];
NSLog(@"new class: %@ superclass: %@", a, [a superclass]);
//[[A alloc] init]; blows up.