转换为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)
}
}
感谢您的帮助。
答案 0 :(得分:2)
我不确定为什么会发生(也许是错误?),但是经过反复试验,我发现每次在代码中声明新的粒子系统时都会发生这种情况。解决方法是将粒子系统声明为可选系统,然后再处理它。您将需要声明和更新发射器,而不是创建一个新的发射器。例如:
var emitterExplosion1 : SCNParticleSystem?
init(){
emitterExplosion1 = SCNParticleSystem()
}
updateEmitter(emitter: emitterExplosion1)
令人讨厌的是,您到处都是100个不同的粒子,但是如果您只需要管理几个,又讨厌填充错误控制台,我发现这很有效。