1

iOS の NSClassFromStringは、BlackBerry 10 SDK に同等のものがありますか?

4

2 に答える 2

0

これを C++ でネイティブに行うことはできません。C++ はかなり静的な言語であり、Objective-C が持つランタイム機能を備えていません。テンプレートメカニズムを使用して、すべてのクラス名をインスタンスにマップすると、少し難しい移植が可能です。これについては、「クラス名を保持する文字列からオブジェクトをインスタンス化する方法はありますか?」で説明されています。

BB10 SDK に関しては、Java であるという仮定に基づいて、これ可能です。

Class myClassName = Class.forName("ClassName");
ClassName myInstance = myClassName.newInstance();

更新: BB10 SDK は C++ であるため、上記以外にこれを行うネイティブな方法はありません。

于 2013-02-05T15:49:13.460 に答える
0

NSClassFromStringはい、 Qt メタ タイプ システムを使用する場合と同等のものがあります。

Q_DECLARE_METATYPEマクロとqRegisterMetaType以下を使用する必要があります。

class UserClass : public Superclass {
    ...
}

Q_DECLARE_METATYPE(UserClass)


int main(int argc, char *argv[]) {
    qRegisterMetaType<UserClass>("UserClass");

    ....
}

次に、次のコードを使用してクラスのインスタンスを作成できます。

int id = QMetaType::type("UserClass");
UserClass *instance = (UserClass*)(QMetaType::construct(id));

オブジェクトを作成するこのアプローチは、QML でも使用されていると思います。たとえば、attachedObjectsセクションなどです。

于 2013-02-09T12:47:13.930 に答える