应用程序崩溃与SKAction的“由于内存问题终止”(命名为:)

时间:2017-08-28 17:53:00

标签: skaction

当我在操作不存在时调用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)

}

2 个答案:

答案 0 :(得分:0)

找不到动作,所以它无限打印出“!!!!!!! action not found:(actionName)”,直到没有剩余的内存为止。

添加一个或多个计数,以便有最大的尝试次数,可能会使用调度队列,因此您可以添加延迟,当然也可以验证您尝试发送的操作是否存在。

答案 1 :(得分:0)

在我的iPad上安装iOS 11.0 beta后,此功能变得更加稳定。如果找不到某个动作,它仍然会崩溃,但当动作出现时似乎更稳定。

作为一种解决方法,我使用的是SKAction(名称来自:)。首先,我获取动作sks文件的url,然后尝试从该文件中检索SKAction。因为这是对操作的定向调用,所以不会发生内存问题。