问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

请教个performselector延时执行的问题问题

发布网友 发布时间:2022-05-18 17:24

我来回答

1个回答

热心网友 时间:2023-10-21 01:15

实际上是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: ,否则有可能产生内存泄露,而且这种内存泄露很难发现,因为它并不违反任何规则,所以一定要注意!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
亲肤绒与猫抓布,哪款面料做沙发好? 我需要 天津大学_高等数学(上下册)_蔡高厅,有这个的百度网盘吗? 蔡高厅讲的高数是哪版教材 自考高等数学工专如何学 2022情侣必备的经典感恩节祝福语 送给爱人的感恩节祝福语 感恩节给爱人祝福语 如何下载小升初数学试卷 请问各位朋友,有哪些好网站,上面有各地优秀的小升初的数学试卷? 民生信用卡什么合适 React Native的开发,有人遇到过这个问题么: Touchable.longPressDelayTimeout 麻将2345566777条胡什么? 如何给button添加长按事件 ThedeviceisinMETAMODE.LongPressPowerbuttontonorma android 中怎么监听按键的长按事件 怎么成为芝麻将 ios uilongpressgesturerecognizer怎么传值 在某些电影中警察为什么被叫做“条子” android onLongPress事件是什么 android 长按事件onKeyLongPress 与手势onLongPress区别 麻将怎么算多少翻啊? 麻将中的自摸牌型 一般几番?几钱? 关于麻将问题 成吉思汗麻将问题,高分 麻将条一色.一条对.二条对.三条对.四条四张.六条一张.九条一对.这付牌怎么算 粘麻将条布用什么胶水 杭州麻将条为什么叫梭 孩子吓到怎么办? 麦粒肿已经五六天了,里面还是有东西在磨眼睛 还感觉眼睛酸酸的 我得了麦粒肿,不过只有点肿,今早起来半天都睁不开,而且比昨天肿的还厉害,有点浮肿的感觉 麻将一条一张二条三张三条三张四条两张五条六条七条八条九条各一张,能胡牌吗? long press power key to continue是什么意思 VB 的命令按钮 如何实现长按功能?! 手机点与长按共存事件。 怎样将下面的代码实现 点击与长按 不冲突? android fragment怎么监听上下滑动 如何找适合自己的工作 NSRunLoop RunLoopMode怎么理解 如何寻找适合自己的职业? 如何去找一个适合自己的工作? 如果你找了个人去工作而几天之后不需要那么多人了,你会怎么办? 一个人要怎样才能找到一份适合自己的工作? 苹果手机 铃声多多下载好的铃声怎么用电脑往手机导阿 但是导不进去找不到文件歌曲在哪里 咋回事阿? 中国古代南方有哪些民族,为何他们不像北方匈奴蒙古一样侵扰中原? 三国时期蜀汉的猛将中死的最可惜的4个人是谁,谁排第一? ajax报error alert能弹出1 手机热点怎么分享平板电脑 招魂,恐怖片,百度云资源 招魂真实事件的原型_招魂高清网盘完整在线观看 想找一部小时候的动画片或者科普片? 求《阴阳先生(2015)》百度云无删减完整版在线观看张涛导演的