首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
substring
main
require
php7
golang
less
subset
solr
md5
cpython
hash
triggers
chat
replace
grid
case
usb
request
search
cSharp
random
runtime
integer
httprequest
foreach
timestamp
typescript
range
testing
frameworks
php8
expression
js
bash
buffer
heap
uri
javascript
settings
spring
list
cPlusPlus
plugins
flutter
future
dockerfile
tags
int
hook
netty
php5
io
object
email
web
header
install
input
hashset
window
shell
jsp
php
config
copy
export
loops
python2
erlang
heatmap
default
vbscript
select
schema
include
tree
const
cookie
bytecode
当前位置:
开发笔记
>
编程语言
> 正文
cocos2dx之retain和release
作者:手机用户2502861125 | 来源:互联网 | 2023-10-10 16:58
1.关于cocos2d-x中的内存管理机制,有很多关于这方面的资料,本不想提起,但笔者这段时间练的一个消灭星星的游戏实现却遇到了相关的问题
1.关于cocos2d-x中的内存管理机制,有很多关于这方面的资料,本不想提起,但笔者这段时间练的一个消灭星星的游戏实现却遇到了相关的问题,简单介绍一下。用于管理点击遍历搜索后的星星对象的vector在取出对象后遇到了问题,取出的行列值出现了混乱,百思不得其解,后来发现这时候取出的sprite对象其实已经被销毁了,所以在加入vector时retain后解决了问题,但其实问题却不在于此。
2.具体原因其实也很简单,消灭星星对象时必须先清空表示星星数组中的标志位,然后才能removechild,否则自然找不到对象了,直接上代码。很明显是相当不合理,只要把第一句放到最后就好了。现在看来确实简单,不过当时查错的过程还是很麻烦的,一直没有注意到这一点。当然了体会自己发现问题,解决问题的过程是很享受的,特别是最后解决后的成就感。扯远了,总之一点点的进步,就能慢慢养成好的习惯,
3.还有一点,cocos2d-x中Vector也封装了对于对象的 retain 操作和 release 操作,因此对对象的生命周期有了很大影响,这也是大多数人所忽略的的地方,可以在源码中找到解释。
4.由此可见,这里的vector已经同c++中不同了,作了进一步的封装,push_back会自动间接调用retain,而最后调用clear清除数组导致引用减少,自然导致了对象销毁。
5.因此笔者专门查阅了相关引用计数相关的资料,其实sprite在创建之初就autorelease 过了,就会被内存管理机制盯上了,可以在源码处找到证明。
6.继承自 Cocos2d-x 的Object的子类都具有内存管理的一套方法,当需要继续持有对象时,就要及时调用retain增加引用计数,避免对象被销毁程序崩溃的尴尬。当然对于不需要的对象调用release减少计数。值得一提的是,调用addchild具有retain同样的效果,在对象被人认领之后当然就不会被销毁了,显而易见,其原理无非就是间接调用了retain。
7.总而言之,当遇到程序意外崩溃,中断后发现内存中对象数据很不正常的时候多半是对象被销毁了。此时注意调用retain的时机,保证对象在运行需要的期间正常存在,就能解决此类问题。
搜索
数组
push
object
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
object
Redis底层数据结构之压缩列表的介绍及实现原理
本文介绍了Redis底层数据结构之压缩列表的概念、实现原理以及使用场景。压缩列表是Redis为了节约内存而开发的一种顺序数据结构,由特殊编码的连续内存块组成。文章详细解释了压缩列表的构成和各个属性的含义,以及如何通过指针来计算表尾节点的地址。压缩列表适用于列表键和哈希键中只包含少量小整数值和短字符串的情况。通过使用压缩列表,可以有效减少内存占用,提升Redis的性能。 ...
[详细]
蜡笔小新 2023-12-12 16:06:05
main
Java中vector的使用详解
本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ...
[详细]
蜡笔小新 2023-12-13 14:14:39
hash
模板引擎StringTemplate的使用方法和特点
本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ...
[详细]
蜡笔小新 2023-12-11 21:45:03
hash
如何使用PHP向系统日历中添加事件?
本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ...
[详细]
蜡笔小新 2023-12-14 21:02:28
hash
JavaScript疑难杂症系列相称性推断的知识点详解
本文详细解析了JavaScript中相称性推断的知识点,包括严厉相称和宽松相称的区别,以及范例转换的规则。针对不同类型的范例值,如差别范例值、统一类的原始范例值和统一类的复合范例值,都给出了具体的比较方法。对于宽松相称的情况,也解释了原始范例值和对象之间的比较规则。通过本文的学习,读者可以更好地理解JavaScript中相称性推断的概念和应用。 ...
[详细]
蜡笔小新 2023-12-14 19:12:10
less
在类中定义数组时出错 - Error on defining arrays in class
Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ...
[详细]
蜡笔小新 2023-12-14 17:38:12
less
C#学习教程:在Console中工作但在Windows窗体中不工作的异步代码分享
本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ...
[详细]
蜡笔小新 2023-12-14 15:56:00
random
Java容器中的compareto方法排序原理解析
本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ...
[详细]
蜡笔小新 2023-12-14 13:53:31
random
LeetCode笔记:剑指Offer 41. 数据流中的中位数(Java、堆、优先队列、知识点)
本文介绍了LeetCode剑指Offer 41题的解题思路和代码实现,主要涉及了Java中的优先队列和堆排序的知识点。优先队列是Queue接口的实现,可以对其中的元素进行排序,采用小顶堆的方式进行排序。本文还介绍了Java中queue的offer、poll、add、remove、element、peek等方法的区别和用法。 ...
[详细]
蜡笔小新 2023-12-14 13:34:58
range
Excel数据处理中的七个查询匹配函数详解
本文介绍了Excel数据处理中的七个查询匹配函数,以vlookup函数为例进行了详细讲解。通过示例和语法解释,说明了vlookup函数的用法和参数的含义,帮助读者更好地理解和运用查询匹配函数进行数据处理。 ...
[详细]
蜡笔小新 2023-12-14 10:15:09
range
Android JSON基础,音视频开发进阶指南目录
Array里面的对象数据是有序的,json字符串最外层是方括号的,方括号:[]解析jsonArray代码try{json字符串最外层是 ...
[详细]
蜡笔小新 2023-12-13 15:05:45
range
Vue项目中结合Element UI解决连续上传多张图片及图片编辑问题
本文介绍了在Vue项目中如何结合Element UI解决连续上传多张图片及图片编辑的问题。作者强调了在编码前要明确需求和所需要的结果,并详细描述了自己的代码实现过程。 ...
[详细]
蜡笔小新 2023-12-13 13:42:30
range
006_Redis的List数据类型
1.List类型是一个链表结构的集合,主要功能有push,pop,获取元素等。List类型是一个双端链表的结构,我们可以通过相关操作进行集合的头部或者尾部添加删除元素,List的设 ...
[详细]
蜡笔小新 2023-12-13 09:57:22
range
java命令运行
Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ...
[详细]
蜡笔小新 2023-12-12 19:26:55
main
李逍遥寻找仙药的迷阵之旅
本文讲述了少年李逍遥为了救治婶婶的病情,前往仙灵岛寻找仙药的故事。他需要穿越一个由M×N个方格组成的迷阵,有些方格内有怪物,有些方格是安全的。李逍遥需要避开有怪物的方格,并经过最少的方格,找到仙药。在寻找的过程中,他还会遇到神秘人物。本文提供了一个迷阵样例及李逍遥找到仙药的路线。 ...
[详细]
蜡笔小新 2023-12-12 13:59:33
手机用户2502861125
这个家伙很懒,什么也没留下!
Tags | 热门标签
substring
main
require
php7
golang
less
subset
solr
md5
cpython
hash
triggers
chat
replace
grid
case
usb
request
search
cSharp
random
runtime
integer
httprequest
foreach
timestamp
typescript
range
testing
frameworks
RankList | 热门文章
1
记一次list循环中对其remove报ConcurrentModificationException错踩过的坑
2
后台播放音乐
3
简单秒杀系统中的接口隐藏(安全验证)
4
求乱序数组中第K大的值
5
标签缓存展示相关问题回复通知回复展示(9)
6
关于postgresql:Navicat连接PostgreSQL失败解决方案
7
jQuery 显示与隐藏 tab选项卡
8
大数据开发笔记(一):HDFS介绍
9
组织_5.3 超级账本组织
10
oracle怎么查看用户,oracle怎么查看用户的索引
11
《赠有吉佐和子》翻译 原文赏析诗人现代老舍
12
ublox NEO-7 SPI接口数据读取调试总结
13
mysql端口调用pymysql_使用PyMySQL操作MySQL数据库
14
编译选项_g++g o c 编译选项
15
elevatorbeta版模型初现
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有