3

これの専門用語はわかりません。ObjectiveCで、次のような変数を宣言できるかどうか疑問に思っています。

NSClassFromString(aClassName) *var;

また

[NSClassFromString(aClassName) class] *var;

どうやら、上記の2つは正しくありません。私が欲しいのは、変数を動的に宣言することです。ありがとう。

4

3 に答える 3

8

タイプのivarをid作成してから、動的に型付けする必要があります。たとえば、動的に入力する場合NSStringは、次のように実行できます。

id ivar;
Class myClass = NSClassFromString(@"NSString");

ivar = [[myClass alloc] initWithString:@"abc"];
于 2013-03-18T01:31:31.520 に答える
1

として宣言varしてから、次のidようにインスタンス化する必要があります。

var = [[NSClassFromString(aClassName) alloc] init];

型を宣言する唯一のポイントはコンパイル時の型チェックであるため、処理できるオブジェクトにメッセージをスローするだけであれば問題はありません。

于 2013-03-18T01:30:03.227 に答える
1

idそれらは動的に型付けされた変数の型ですか。変数が特定のクラスに準拠しているかどうかを確認する必要がある場合は、を使用できます-isKindOfClass:

クラスが次のようなタイプであるかどうかを動的にテストできます[var isKinkdOfClass:NSClassFromString(aClassName)]

于 2013-03-18T01:30:13.980 に答える