Xcode7.3중 SKAudioNode의 "괴이한"초기화 해결

판다 돼지·후페가 창작하거나 번역한 작품.전재를 환영합니다. 전재는 출처를 밝혀 주십시오.잘 못 썼다고 생각되면 의견을 많이 내주시고 괜찮다고 생각되면 좋아요를 많이 눌러주세요.감사합니다!hopy ;)
나는 이전 버전의 Xcode에서 테스트하지 않았지만, 많은 사람들이 SKAudioNode의 초기화 코드를 Xcode7.에 반영했다.3 이전에 매우 잘 일했지만 7.3에서 다음 코드가 잘못되었습니다.
var bgMusic:SKAudioNode!

func playBgMusic(name:String){
        if bgMusic != nil{
            bgMusic.removeFromParent()
        }

        bgMusic = SKAudioNode(fileNamed: name)
        bgMusic.autoplayLooped = true
        addChild(bgMusic)
    }

보시다시피 bgMusic은 대상 속성입니다. 상기 코드가 실행될 때 bgMusic는 nil로 되돌아오고 그 다음에 다음과 같은 오류가 발생합니다.
fatal error: unexpectedly found nil while unwrapping an Optional value

음악 자원 파일의 이름이 정확하고 앱의 Main bundle에도 저장되어 있다고 믿으세요.코드가 Swift로 작성되었기 때문에 대응하는 Objc 코드도 이럴지 확실하지 않습니다.
해결 방법은 다음과 같습니다. 로컬 변수의 반환 값을 임시로 저장하면 됩니다.
func playBgMusic(name:String){
        if bgMusic != nil{
            bgMusic.removeFromParent()
        }

        let tmpMusic = SKAudioNode(fileNamed: name)
        tmpMusic.autoplayLooped = true
        bgMusic = tmpMusic
        addChild(bgMusic)
    }

좋은 웹페이지 즐겨찾기