質問

あなたのための簡単な質問。私は、オブジェクトのインスタンスを作成できるようにしたいです。オブジェクトタイプは、文字列をベースにしています。

PHPであなただけの文字列を使用してクラス名を置き換えることができますが、私はそれがObjective Cの中にそれが容易である疑います。

NSString * className;
id theObject;
className = @"TestObject";
theObject = [[className alloc] init];

ここではそれがどのように見えるかのブレークダウンです。私が試してみて、巨大なケーススタイルの文を使用しないようにしたい。

それは、このためのセレクタシステムを使用することは可能ですか?

任意のアイデア?

乾杯

役に立ちましたか?

解決

あなたはインポートヘッダに必要がある場合があります(以下のOBJ-Cランタイム関数のいずれかを使用して、その名前でクラスを取得することができます:

id objc_lookUpClass(const char *name)
id objc_getClass(const char *name)

あなたのコードは(かかわらず、それをテストしていない)ように見えるかもしれませんのでます:

NSString * className = @"TestObject";
id theObject = nil;
Class myClass = objc_lookUpClass([className UTF8String]);
if (myClass)
   theObject = [[myClass alloc] init];

他のヒント

あなたはClass

を使用して動的にNSClassFromString()オブジェクトを取得することができます
Class c = NSClassFromString(@"ClassName");
id obj = [[c alloc] init];
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top