Слабая переменная SCNParticleSystem в [addressX] содержит [addressY] - PullRequest
0 голосов
/ 01 декабря 2018

Я начал получать эту ошибку после конвертации в swift 4.2.До этого проблем не было.После удаления объекта из массива ошибка повторяется.Если я достану эмиттер, никаких проблем.

Похоже, он не теряет память и не падает.

objc [1207]: переменная __weak в 0x137ef2220 содержит 0x137ef0040 вместо 0x137ef1fc0,Вероятно, это неправильное использование objc_storeWeak () и objc_loadWeak ().Перерыв на objc_weak_error для отладки.

class BaseObject
{
    var emitterExplosion1 = SCNParticleSystem()

    //********************************************************************
    init()
    {
        emitterExplosion1       = gNodes.createEmitter(vParticleType: .explosion1)
    }
}

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 04 декабря 2018

Я не уверен, почему это происходит (возможно, ошибка?), Но после долгих проб и ошибок я обнаружил, что это происходит каждый раз, когда в вашем коде объявляется новая система частиц.Обходной путь - объявить систему частиц необязательной, а затем обработать ее позже.Вместо этого вам нужно будет объявить и обновить эмиттер, а не создавать новый.Например:

var emitterExplosion1 : SCNParticleSystem?
init(){
    emitterExplosion1 = SCNParticleSystem()
}
updateEmitter(emitter: emitterExplosion1)

Это раздражает, если у вас везде вылетают 100 различных частиц, но если у вас есть только несколько, чтобы управлять и ненавидеть заполнение консоли ошибок, я обнаружил, что это работает.

...