Cocos2d-x有一个不错的控件CCTableView。之前用的时候发现有cell的顺序错乱和重复出现的问题。后来仔细看了一下源码,发现是自己用法错误。但是网上有人说是一个bug,要改源码。我发现2.04以上的源码都是没问题的。

先来看看网上说的改源码是怎么样改的:

CCTableViewCell *CCTableView::dequeueCell()

{

CCTableViewCell *cell;

//    if (m_pCellsFreed->count() ==0) {

if (1) {

cell = NULL;

} else {

cell = (CCTableViewCell*)m_pCellsFreed->objectAtIndex(0);

cell->retain();

m_pCellsFreed->removeObjectAtIndex(0);

cell->autorelease();

}

return cell;

}

也就是说,让 dequeueCell总是返回NULL。这样一来

CCTableViewCell* ProfileLayer::tableCellAtIndex(cocos2d::extension::CCTableView *table,unsignedint idx){

CCTableViewCell* cell = table->dequeueCell();

if (!cell) {}

return cell;

这个函数中每次都在执行if (!cell)语句,如果这个if语句里是创建cell的话,当你不断滑动这个view,就会不断创建,内存会越来越少,直到crash。

正确的用法是在

tableCellAtIndex(cocos2d::extension::CCTableView *table,unsigned int idx)中,每次根据idx来“刷新”cell的内容。也就是说,dequeueCell()返回的不一定是空,有可能是其它cell的内容,这个时候你可以把这个cell的内容都抹掉再重现加载cell的顺序为idx的内容。

转载于:https://www.cnblogs.com/snake-hand/p/3149566.html

cocos2d-x关于CCTableView的“乱序问题”的理解相关推荐

  1. wireshark和tcpdump抓包TCP乱序和重传怎么办?PCAP TCP排序工具分享

    点击上方↑↑↑蓝字[协议分析与还原]关注我们 " 介绍TCP排序方法,分享一个Windows版的TCP排序工具." 在分析协议的过程中,不可避免地需要抓包. 无论抓包条件如何优越, ...

  2. 基于三维向量对的乱序堆叠物体的位姿识别

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 摘要:针对乱序堆叠物体识别效率低.速度慢的问题,提出一种快速可靠的3D对象检测可以应用于复杂场景中随机 ...

  3. python使用random模块生成随机数、实现随机乱序和随机抽样?

    如何使用random模块生成随机数.实现随机乱序和随机抽样? random.random()函数可以生成[0.0, 1.0)之间的随机浮点数. random.uniform(a, b)函数可以生成[a ...

  4. 查处的数据如何乱序_老司机总结常用镜像方法,让镜像数据更加可靠

    在做数据包分析的时候,经常会说一句话,"Packets never lie(数据包不会说谎)",即数据包会真实反应网络服务和应用服务的真实状态.基于网络镜像的流量分析同样如此,如果 ...

  5. TCP数据流稳定性--TCP分片,重组及乱序

    1.IP分片的情况.IP软件包有一个[分片]和[重组]模块,一个IP数据报在传输中可以被ip软件包的[分片]模块分片,在目的接收端B的IP软件包 的[重组]模块重新组合.接收端B的IP软件包如果收到乱 ...

  6. FastJson乱序问题

    1.初始化为有序json对象 JSONObject jsonOrdered= new JSONObject(true); 2.将String对象转换过程中,不要调整顺序 JSONObject json ...

  7. Android ListView异步加载图片乱序问题,原因分析及解决方案

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/45586553 在Android所有系统自带的控件当中,ListView这个控件算是 ...

  8. 编译乱序(Compiler Reordering)

    作者:smcdef 发布于:2019-1-23 22:59 分类:内核同步机制 编译器(compiler)的工作就是优化我们的代码以提高性能.这包括在不改变程序行为的情况下重新排列指令.因为compi ...

  9. 对python乱序字符串检查算法研究

    显示不同量级的算法的一个很好的例子是字符串的乱序检查.乱序字符串是指一个字符串只是另一个字符串的重新排列.例如,'heart' 和 'earth' 就是乱序字符串.'python' 和 'typhon ...

  10. python 使用sort()函数和正则表达式(lambda)对os.listdir()获取的文件夹文件列表进行重新排序 乱序排序

    # 排序函数,对文件列表进行排序 # 排序函数,对文件列表进行排序(filenames为文件夹文件的文件名的字符串列表) def sort_filenames(filenames):# (1)可以以l ...

最新文章

  1. 避坑指南:数据科学家新手常犯的13个错误(附工具、学习资源链接)
  2. 重磅:国家正式出台学术不端行为界定
  3. Hibernate Validation与Spring整合各注解的用法Demo
  4. 水晶报表Crystal 语法 实用字段编辑
  5. androidEditTextinputType及android:imeOptions=”actionDone”(转)
  6. 栈的应用_DFS解迷宫问题
  7. 基于ZKWeb + Angular 4.0的开源管理后台Demo
  8. 【人工智能】《Python深度学习》
  9. python是一种汇编类型的语言_python全栈开发学习_day2_语言种类及变量
  10. joint_state_publisher_gui
  11. 卸载ubuntu系统,恢复win10单系统【win10+Ubuntu20.04双系统】
  12. mysql 1067_mysql启动错误1067进程意外终止的解决方法
  13. java bitwise_java – Bitwise不对一串位操作
  14. java8新特性之Stream流
  15. 那些百万年薪的算法工程师,都是经历了哪些九死一生?
  16. 富士康员工盗卖iPhone部件3年赚3亿;张朝阳称工作只为赚钱太low;国产统一操作系统 UOS 正全面适配 | EA周报...
  17. mysql中union学习总结
  18. 微信oa服务器,企业号来了—你必须了解OA与微信结合的几种方式
  19. android11.0 Launcher3 高端定制之 BubbleTextView 应用名称双行显示
  20. SAP ABAP 业务对象 BUS6038 AssetDownPayment 资产:预付款 BAPI 清单和相关 TCODE

热门文章

  1. 牛客NOIP暑期七天营-提高组1 解题报告
  2. 怎么看公司财务报表?
  3. USB Host读取U盘成功
  4. [Python3] 023 面向对象 第三弹
  5. offset,client,scroll的学习记录
  6. vSphere虚拟机磁盘热扩容
  7. json文件_ajax
  8. IT部门域事件与业务分析
  9. 九度OJ - 题目1481:Is It A Tree?
  10. 可以让你少奋斗十年的工作经验(转)