浅谈cocos2dx(19) 二段构建模式
~~~~我的生活,我的点点滴滴!! 这篇文章将围绕两个疑问点展开 一、什么是二段构建模式? 大家都知道在C中我们一般在构造函数中为对象分配内存空间然后初始化成员变量,比如我们调用了new某个东西,那么在堆上会先为对象分配内存空间,然后调用构造函数
~~~~我的生活,我的点点滴滴!!
这篇文章将围绕两个疑问点展开
一、什么是二段构建模式?
大家都知道在C++中我们一般在构造函数中为对象分配内存空间然后初始化成员变量,比如我们调用了new某个东西,那么在堆上会先为对象分配内存空间,然后调用构造函数,在构造函数中完成一些初始化的工作。而二段构建模式就是将内存空间的分配和初始化分开来完成,然后调用一个静态方法来返回这个对象。
就拿cocos2dx中的Sprite类来说吧,当我们调用Sprite::create()的时候内部先使用new来分配内存空间,然后调用init方法来初始化一些变量的设置。所以cocos2dx中的二段构建模式就是将new分配内存空间和init初始化内容分开来处理,而不是c++传统的做法在构造函数中初始化变量。
Sprite* Sprite::create() { //分配内存 Sprite *sprite = new Sprite(); //init初始化 if (sprite && sprite->init()) { //内存管理的工作 sprite->autorelease(); return sprite; } CC_SAFE_DELETE(sprite); return nullptr; }
上边就是使用二段构建模式的过程,Sprite首先调用new来分配内存空间,然后调用init函数来完成初始化的工作,顺带还做了内存管理的工作,最后返回初始化好的对象。所以看了Sprite的create方法的实现,我们也知道了应该怎么使用这个二段构建模式了吧。
二、为什么要这么用?
c++程序员来说初始化工作不都是在构造函数中完成的吗,cocos中为何要这么做呢?
这里引述一下王哲的话:“其实我们设计二段构造时首先考虑其优势而非兼容cocos2d-iphone. 初始化时会遇到图片资源不存在等异常,而C++构造函数无返回值,只能用try-catch来处理异常,启用try-catch会使编译后二进制文件大不少,故需要init返回bool值。Symbian(qt), Bada SDK,objc的alloc + init也都是二阶段构造”。现在大家明白了吧,兼容Cocos2d-iPhone是一个原因,另一个重要的原因是构造函数没有返回值啊,如果加载资源图片的时候不存在怎么办,所以初始化的工作写在init函数中,这个函数返回的bool值用来判断是否初始化成功。使用这种方法还可以强化设计,想想自己写代码的时候是不是因为没有初始化某个成员变量导致了bug,这样做就是提醒你记得要在init中初始化成员变量。通过create静态函数返回的这个对象也实现了Cocos2dx中的内存管理,就不用我们自己麻烦了。还有一个原因是在C++的构造函数中是不能调用虚函数的,为了调用虚函数来完成一些功能就要写在init函数中。
以上就是二段构建模式的说明了,在我们写cocos程序的时候其实不知不觉就已经在使用这个构建模式了,想一下我们一个类继承了Layer,然后使用了宏CREATE_FUNC(),这不就是create静态方法吗,在init函数中完成了初始化,整个过程就是在用这种设计模式!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

微信勿扰模式什么意思如今,随着智能手机的普及和移动互联网的迅猛发展,社交媒体平台已经成为人们日常生活中不可或缺的一部分。而微信作为国内最流行的社交媒体平台之一,几乎每个人都有一个微信账号。我们可以通过微信与朋友、家人、同事进行实时沟通,分享生活中的点滴,了解彼此的近况。然而,在这个时代,我们也不可避免地面临着信息过载和隐私泄露的问题,特别是对于那些需要专注或

长期以来,iOS设备一直能够使用“健康”应用程序跟踪您的睡眠模式等。但是,当您在睡觉时被通知打扰时,这不是很烦人吗?这些通知可能无关紧要,因此在此过程中会扰乱您的睡眠模式。虽然免打扰模式是避免睡觉时分心的好方法,但它可能会导致您错过夜间收到的重要电话和消息。值得庆幸的是,这就是睡眠模式的用武之地。让我们了解更多关于它以及如何在iPhone上使用它的信息。睡眠模式在iPhone上有什么作用睡眠模式是iOS中专用的专注模式,会根据你在“健康”App中的睡眠定时自动激活。它可以帮助您设置闹钟,然后可以

在本系列的前两个教程中,我们构建了用于登录和注册新用户的自定义页面。现在,登录流程中只剩下一个部分需要探索和替换:如果用户忘记密码并想要重置WordPress密码,会发生什么?在本教程中,我们将解决最后一步并完成我们在整个系列中构建的个性化登录插件。WordPress中的密码重置功能或多或少遵循当今网站上的标准方法:用户通过输入用户名或电子邮件地址并请求WordPress重置密码来启动重置。创建临时密码重置令牌并将其存储在用户数据中。包含此令牌的链接将发送到用户的电子邮件地址。用户点击链接。在重

即使在“请勿打扰”模式下接听电话也可能是一种非常烦人的体验。顾名思义,请勿打扰模式可关闭来自邮件、消息等的所有来电通知和警报。您可以按照这些解决方案集进行修复。修复1–启用对焦模式在手机上启用对焦模式。步骤1–从顶部向下滑动以访问控制中心。步骤2–接下来,在手机上启用“对焦模式”。专注模式可在手机上启用“请勿打扰”模式。它不会让您的手机上出现任何来电提醒。修复2–更改对焦模式设置如果对焦模式设置中存在一些问题,则应进行修复。步骤1–打开您的iPhone设置窗口。步骤2–接下来,打开“对焦”模式设

在iPhone15Pro和iPhone15ProMax型号上,Apple推出了一个物理可编程的动作按钮,取代了音量按钮上方的传统响铃/静音开关。可以对操作按钮进行编程以执行几种不同的功能,但是在静音和响铃模式之间切换的能力并没有消失。默认情况下,长按一次操作按钮将使设备静音,按钮的触觉反馈将发出三个脉冲。两款iPhone15Pro机型在状态栏中的时间旁边都会显示一个划掉的铃铛符号,表示静音/静音模式已激活,并且它将一直保持到您再次长按“操作”按钮取消设备静音。如果您倾向于将iPhone置于静音模

记事本++暗模式v8.0没有参数,Notepad++是最有用的文本编辑器。在Windows10上运行的每个应用程序都支持暗模式。您可以命名Web浏览器,例如Chrome、Firefox和MicrosoftEdge。如果您在记事本++上工作,默认的白色背景可能会伤害您的眼睛。开发人员已将暗模式添加到版本8的Notepad++中,这是打开它的方法。为Windows11/10启用记事本++暗模式启动记事本++单击“设置”>“首选项”>“暗模式”选择“启用深色模式”重新启动记

Windows笔记本电脑带有休眠和关机选项。当您将笔记本电脑置于睡眠模式时,它将进入低功耗模式,您可以以任何离开它的方式继续工作。如果您关闭了笔记本电脑,则需要关闭所有程序以及您的工作并重新开始。如果你想在一天内从笔记本电脑上稍事休息,睡眠模式或休眠模式是不错的选择。那关门呢?我应该每次都关闭笔记本电脑吗?让我们来找出答案。我应该每次都关闭笔记本电脑吗?关闭笔记本电脑可能是个好主意,因为可以节省能源、延长设备寿命,特别是在长时间不使用时。但是在白天,将笔记本电脑置于睡眠模式以继续任务是个不错的选

在使用win10平板模式的时候,我们可以接入触摸屏设备等来使用电脑,但是很多的用户们不清楚怎么使用触摸屏的键盘,怎么打开它,那就快来看看详细的教程吧~win10平板模式键盘怎么设置在桌面上详细教程:1、我们进入平板模式后,可以在下面看见。我们点击一下。2、点击一下,就能够使用触摸屏键盘了。
