当前位置: 首页 > news >正文

如何做网络推广员/广东百度seo

如何做网络推广员,广东百度seo,上海电商网站开发,网站备案名称修改前几天在给游戏做收尾测试时,发现了一个关于内存泄露的问题,一直没找着问题所在,经过反复调试和查找资料今天终于解决了,特此记录下来以免以后再犯! 关于objective-c的内存管理,我们都知道一个原则就是“谁…

前几天在给游戏做收尾测试时,发现了一个关于内存泄露的问题,一直没找着问题所在,经过反复调试和查找资料今天终于解决了,特此记录下来以免以后再犯!

关于objective-c的内存管理,我们都知道一个原则就是“谁创建,谁释放”,换句话说,不是我们创建的,就不用我们去释放。但是实际上objective-c的内存管理远远没那么简单,我的情况是这样的:

我在debug模式下面用CCLOG在dealloc函数里面输出一些信息,目的就是要检查场景的dealloc方法在replaceScene的时候有没有被调用,按照子龙山人大哥的说法,如果场景切换的时候dealloc没有调用,说明你这个场景的内存有问题。有可能被某个对象retain了,其retainCount在replaceScene的时候没有减少到0,所以dealloc方法是不会调用的。如果dealloc方法都没有调掉,那么这其实就是一种内存泄露。我在检查时,发现一个场景死活不调用dealloc,最后恨不得把所有的游戏逻辑都移除了,还是不走dealloc。

最后的最后才发现实际上是performSelector延时调用的问题,经查找资料,performSelector关于内存管理的执行原理是这样的执行 [self performSelector:@selector(method1:) withObject:self.tableLayer afterDelay:3]; 的时候,系统会将tableLayer的引用计数加1,执行完这个方法时,还会将tableLayer的引用计数减1,而在我的游戏里这个延时执行函数是被多次调用的,有时切换场景时延时函数已经被调用但还没有执行,这时tableLayer的引用计数没有减少到0,也就导致了切换场景dealloc方法没有被调用,出现了内存泄露。

所以最后我的解决办法就是取消那些还没有来得及执行的延时函数,代码很简单:

[NSObject cancelPreviousPerformRequestsWithTarget:self]

当然你也可以一个一个得这样用:

[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(method1:) object:nil]

加上了这个以后,切换场景也就很顺利地执行了dealloc方法,至此问题解决!

最后在找资料时也发现了,延时调用实现长按钮的实现思路,记录下来以备后用:

在touchBegan里面

[self performSelector:@selector(longPressMethod:) withObject:nil afterDelay:longPressTime]

然后在end 或cancel里做判断,如果时间不够长按的时间调用:

[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(longPressMethod:) object:nil]

取消began里的方法

最后最后总结:

performSelector是一个很有用的函数,跟它打过不少交道,经过血与泪的教训,总结一下它的使用如下:

使用前先检测一下,

SEL testSelector = @selector(test:);

if([tester respondsToSelector:testSelector])

{

//如果响应就执行

[tester test:@"invoke test method"];

}

使用后,如果有必要,需要显示的调用cancelPreviousPerformRequestsWithTarget:selector:object: ,否则有可能产生内存泄露,而且这种内存泄露很难发现,因为它并不违反任何规则,所以一定要注意!

http://www.jmfq.cn/news/5299579.html

相关文章:

  • 做网站推销手表/做优化的网站
  • 重庆网站房地产/seo知识总结
  • 广告设计公司专业vi设计公司/seo网络贸易网站推广
  • 广州荔湾网站建设/软文推广案例
  • 外贸网站建设 福田/百度搜索引擎关键词
  • 河间做网站价格/今天刚刚发生的重大新闻
  • 佛山网站优化质量好/网络营销案例具体分析
  • 网站建设好的/国内新闻最近新闻今天
  • 网站建设合作合同/苏州seo按天扣费
  • 网站设计做图工具/外包网络推广公司
  • 高清品牌网站设计建设/铜陵seo
  • 钓鱼网站制作全套/网站测速
  • 温州建设小学的网站/网站开发流程的8个步骤
  • 上海网站建设系/杭州网站定制
  • 做网站优化词怎么选择/seo实战培训费用
  • 做本地生活圈网站好吗/欧美网站建设
  • 无锡高端网站建设/免费友情链接
  • 青岛营销型网站建设/南京seo报价
  • 最靠谱的海外购物网站/seo技术是什么意思
  • dz论坛可以做商业网站/微信广告投放推广平台
  • 电子商务网站关键技术/网上卖货的平台有哪些
  • 专门做淘宝优惠券的网站/一键优化清理加速
  • 手机站喝茶影视/baidu优化
  • 网站基础建设/保定seo网络推广
  • 邢台哪儿做网站便宜/抖音seo排名优化软件
  • 网站建设概要设计怎么写/谷歌官方网站登录入口
  • 怎么复制网站模板/好看的网站设计
  • 深圳宝安大型网站建设/百度网站优化排名
  • 温州网站建设 seo/2345网址大全
  • 做导购型网站/市场营销主要学什么