当我在操作不存在时调用SKAction(名为:)时,应用程序因“因内存问题而终止”崩溃。
我的应用程序有许多精灵套件场景(.sks文件)和精灵套件动作文件。当一个精灵被按下时,我尝试为该对象实例化一个SKAction。如果我请求的操作不存在,则应用程序将崩溃而不是返回nil。似乎系统正在搜索所有操作,并以某种方式不释放内存。有没有人遇到过这个问题?如果sks的数量减少了,似乎解决了这个问题,但我需要所有SKS的
func runAction(node:SKNode, actionName:String) {
guard let action = SKAction(named: actionName) else {
print("!!!!!!! action not found: \(actionName)")
return
}
print("found action")
node.run(action)
}
答案 0 :(得分:0)
找不到动作,所以它无限打印出“!!!!!!! action not found:(actionName)”,直到没有剩余的内存为止。
添加一个或多个计数,以便有最大的尝试次数,可能会使用调度队列,因此您可以添加延迟,当然也可以验证您尝试发送的操作是否存在。
答案 1 :(得分:0)
在我的iPad上安装iOS 11.0 beta后,此功能变得更加稳定。如果找不到某个动作,它仍然会崩溃,但当动作出现时似乎更稳定。
作为一种解决方法,我使用的是SKAction(名称来自:)。首先,我获取动作sks文件的url,然后尝试从该文件中检索SKAction。因为这是对操作的定向调用,所以不会发生内存问题。