0

Objective-Cにオブジェクト/クラスを変数に格納してalloc/initに渡す方法はありますか?

例えば:

UIViewController = foo
foo *bar = [[foo alloc] init]

現在のViewControllerに基づいて、別のクラスにナビゲーションボタンを動的に作成するシステムを作成しようとしています。'self'をメソッドに渡すことはできますが、結果の変数でalloc/initを実行できません。いつでも.hファイルを直接インポートできますが、理想的には、コードの再利用をできるだけ簡単にしたいと思います。多分私はこれについて間違った方法で行っているのですか?

4

3 に答える 3

2

質問を理解するかどうかはわかりませんが、別のインスタンスと同じクラスの新しいインスタンスを作成しようとしている場合は、次のようにすることができます。

id foo; // an actual instance of any class

id bar = [[[foo class] alloc] init]; // another instance

fooがとして宣言されていない場合はid、ショートカットを使用することもできます:[[foo.class alloc] init]またはさらに短い:[foo.class new]

次のいずれかのクラスオブジェクトを使用することもできます。

id foo;
Class fooClass = [foo class];

id bar = [[fooClass alloc] init];

またはクラス名:

id foo;
NSString* fooClassName = NSStringFromClass( [foo class] );

id bar = [[NSClassFromString( fooClassName ) alloc] init];
于 2012-07-10T21:07:28.260 に答える
1

作成したいclassNameを次のように保存するとします。NSString

あなたが試すことができます: id bar = [[NSClassFromString(foo) alloc] init]

于 2012-07-10T21:10:15.720 に答える
1

はい、タイプの変数を作成するだけClassです。名前付きクラスを割り当てるには、次のようにします。

Class foo = [UIViewController class];

または、クラス名が動的に選択された文字列である場合(ねえ、それは起こります)、次のようにします。

NSString *className = @"UIViewController";
Class foo = NSClassFromString(className);
于 2012-07-10T21:12:36.200 に答える