如何将我的AppDelegate定义为它实例化的类的实例变量

How to define my AppDelegate as instance variable of a class it instantiates?

本文关键字:实例化 实例 变量 我的 AppDelegate 定义      更新时间:2023-10-16

我正在启动一个C++项目(使用Cocos2d-x,但并不重要),我的AppDelegate在其中创建一个IntroMenu对象。我想将AppDelegate定义为IntroMenu类的实例变量,但我没能做到…

以下是我的IntroMenu的定义:

简介菜单.h

class  IntroMenu : public cocos2d::CCLayerColor
{
public:
    AppDelegate* _app;
    //etc...
}

简介菜单.m

CCScene* IntroMenu::scene()
{
    CCScene *scene = CCScene::node();
    IntroMenu *layer = IntroMenu::node();
    scene->addChild(layer);
    return scene;
}

当我从我的AppDelegate安装IntroMenu时,我在AppDelegate:中这样进行

introScene = IntroMenu::scene();
((IntroMenu*)introScene)->_app = this;

_app是IntroMenu的公共变量(类型为AppDelegate)。

问题是,当我稍后想在AppDelegate的其他方法中使用_app时,它是一个空指针。

如何正确实例化IntroMenu及其变量_app

谢谢!!

我认为正确的答案是:

AppDelegate *aD = ((AppDelegate*)CCApplication::sharedApplication());
aD->myAppDelegateMethod();
[[UIApplication sharedApplication] delegate]

通过这种方式,您可以访问您的应用程序委托类:)