2

ゲームステージの設計のためにパートナーと仕事を分担する必要があり、plist を使用する必要があります。たとえば、実行時にオブジェクトを動的にインスタンス化する必要がある 20 種類のクラスがあるとします。特定のクラスが plist 入力から選択され、そのクラスのオブジェクトがその場で作成されます。

私の頭に最初に浮かんだのはswitch()、それは少し時代遅れだったと思います。

NSClassFromStringそこで、Stack Overflow を検索したところ、iOS にはとがあることに気付きましたobjc_getclass

数回試してみると、NSClassFromStringplist と bam で前もって必要なクラスを指定できるので、これは非常に優れていることがわかります。では行きましょう。その後、オブジェクト プロパティの設定は KeyValue ディクショナリで行われ、すべて魔法のように行われます。

+私の質問は、この方法でオブジェクトを作成する場合、クラス メソッド (で始まるもの) をどのように呼び出すことができるかということです。ドキュメントを調べたところ、 がありNSSelectorFromString()ます。しかし、クラスではなくインスタンスではありませんか?

4

2 に答える 2

5

NSClassFromStringクラスのインスタンスではなく、クラス オブジェクトを返します。例えば:

Class dateClass = NSClassFromString(@"NSDate"); //get the class object

NSDate *dateInstance = [dateClass date]; //call a class method on the class object
于 2011-02-11T09:15:04.420 に答える
2

performSelector:クラスを呼び出すことができます。

たとえば、次のように呼び出すことができます。

[NSClassFromString(@"UIViewController") performSelector:NSSelectorFromString(@"setToolbarItems:")]
于 2011-02-11T09:16:37.687 に答える