首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS7 SpriteKit在NSThread待了一段时间后崩溃

iOS7 SpriteKit在NSThread待了一段时间后崩溃
EN

Stack Overflow用户
提问于 2014-04-27 18:15:13
回答 1查看 117关注 0票数 0

我目前正在编写一个基于回合的SpriteKit游戏与一个或多个人工智能玩家。每个AI一次转一圈,并使用共享的solutionFinder实例找到自己的解决方案,但是在一个分离的线程中这样做,因为有时需要几秒钟.

代码语言:javascript
复制
[NSThread detachNewThreadSelector:@selector(findSolution:)
    toTarget:self.scene.solutionFinder 
    withObject:self];

...where self是当前的AI播放器,scene是它的父SKScene,它包含一个SKNode,它将AI玩家作为子级。当线程只运行几毫秒时,一切正常,但是当线程运行几秒钟时,我很少在SKScene-(void)update:(CFTimeInterval)currentTime方法中得到一个-(void)update:(CFTimeInterval)currentTime异常。

我添加了一些异常抛出的NSLogs,问题在于取消引用包含AI玩家的SKNode。但是,记录指针指向的地址表明它没有从有效的访问更改为无效的访问--是否可能在线程完成时分离的线程不正确地释放SKNode,或者其他什么地方出错了?

NSThread调用的方法被包装在一个@autorelease中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-08 09:51:28

因此,在尝试了大量的东西,包括malloc、NSZombie、@autorelease、GCD、performSelectorInBackground和其他一些东西之后,我仍然偶尔会崩溃。

不过现在已经修好了!在修复之前,包含所有播放器的SKNode被公开为一个属性,并通过需要访问的代码传递,我认为这就是问题所在,因为SpriteKit会不时地从我脚下扫过东西。现在,任何需要在类之间共享的对象都是通过我自己管理的NSArray共享的,经过几个小时的压力测试,问题似乎已经消失。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23327125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档