转换到 swift 4.2 后我开始收到此错误。在此之前,没有任何问题。一旦从数组中删除该对象,错误就会重复出现。如果我取出发射器,就没有问题。
它似乎没有丢失内存,也没有崩溃。
objc[1207]:0x137ef2220 处的 __weak 变量保存的是 0x137ef0040,而不是 0x137ef1fc0。这可能是 objc_storeWeak() 和 objc_loadWeak() 的错误使用。在 objc_weak_error 上中断进行调试。
class BaseObject
{
var emitterExplosion1 = SCNParticleSystem()
//********************************************************************
init()
{
emitterExplosion1 = gNodes.createEmitter(vParticleType: .explosion1)
}
}
感谢您的帮助。
最佳答案
我不确定为什么会发生这种情况(也许是一个错误?),但经过大量试验和错误,我发现每次在代码中声明新的粒子系统时都会发生这种情况。解决方法是将粒子系统声明为可选,然后稍后处理。相反,您需要声明并更新发射器,而不是创建一个新的发射器。例如:
var emitterExplosion1 : SCNParticleSystem?
init(){
emitterExplosion1 = SCNParticleSystem()
}
updateEmitter(emitter: emitterExplosion1)
如果你有 100 个不同的粒子到处乱飞,那会很烦人,但如果你只有几个需要管理并且讨厌错误控制台被填满,我发现这很有效。
关于scenekit - [addressX] 处的 SCNParticleSystem 弱变量保存 [addressY],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53568934/