例:クラスのインスタンスを動的に作成するにはどうすればよいですか?
UIViewController *controller = [[MyViewController alloc] initWithNib];
(-initWithNibはのUIViewControllerサブクラスのカスタムメソッドであることに注意してください):私はすべての割り当てられたと同じように初期化されている10のView Controllerを、持っている
次のView ControllerクラスはOtherViewControllerなどです。私はビューコントローラを必要に応じて遅れてロードしたいと思う。しかし、そうするためには、私はそれを初期化することができるように、私は与えられたインデックスのための対応するクラスを与える何らかの種類の "配列"を持っている必要があります。
大規模なswitch文を使ってメソッドを作成することになりました。これは、単一のView Controllerごとに個別の割り当てと初期化を行うだけです。私はそれに満足していない。変数に適切なクラスを割り当ててから、switch文の最後に変数からそのクラスを割り当てて初期化すれば、はるかに良いでしょう。
これを達成する方法はありますか?
編集:私は機能
id class_createInstance(Class cls, size_t extraBytes)
を見つけたし、すべてのクラスは、プロパティ「クラス」を持っているようです。しかし、私はそれをインスタンス変数に割り当てることはできません。これは機能しません:
Class cls = [UIImage class];
cls *image = [cls imageNamed:@"avatar.png"];
最初の行がコンパイルされます。しかし、2番目のエラーは: "イメージが宣言されていません"。
http://stackoverflow.com/questions/381793の正確な複製のように見えます – smorgan
私は基本的な工場パターンを含むように私の答えを編集しました。 id image = [cls imageNamed:@ "avatar.png"]とするといいでしょう。ただし、ここでは共通の基本タイプ(UIImage * image = ...)を使用することをおすすめします。質問の最初の部分がそうであることを示すためです。 – Jason