2017-12-16 37 views
0

Projucer (Juce v5.2.0) 및 xCode 9.2에서 작동하며 슬라이더에서 setLookAndFeel을 사용할 때 이상한 오류가 발생합니다.Juce - setLookAndFeel - 오류

는 그 튜토리얼과 단계별로 이동합니다 https://www.youtube.com/watch?v=po46y8UKPOY&t=1020s

그리고 정확히 같은 코드를 확인하십시오. 비디오에는 문제가 없습니다. 영화의 17:13에있는 코드와 동일한 코드를 컴파일하면 오류가 발생합니다.

내 문제는 : 코드를 컴파일 할 때 모든 것이 정상이고 컴파일 된 응용 프로그램이 훌륭하게 작동하며 "setLookAndFeel"은 예상대로 작동합니다. 하지만 문제는 앱을 닫을 때입니다. 그런 다음 앱이 닫힌 것처럼 보이지만 아이콘이 도크에 있고 xCode에 '중지'버튼이 활성화되어있어 내 앱이 여전히 작동하는 것처럼 보입니다. 그리고 엑스 코드라는 것을 자동으로 나를한다 "Juce 마사지 스레드 (1)"오류가 : Juce Message Thread (1): EXC_BREAKPOINT (code=EXC_I386_BPT, subcode=0x0

그것은 그 코드의 향후 계획 :

jassert (masterReference.getNumActiveWeakReferences() == 0 
      || (masterReference.getNumActiveWeakReferences() == 1 
       && this == &getDefaultLookAndFeel())); 

이 사람이 나를 도울 수는? 미리 감사드립니다.

답변

0

당신이 그것을 공격 한 이유를 설명 명중 한 주장 위의 큰 주석 블록있다 :

/* This assertion is triggered if you try to delete a LookAndFeel object while something 
    is still using it! 

    Reasons may be: 
    - it's still being used as the default LookAndFeel; or 
    - it's set as a Component's current lookandfeel; or 
    - there's a WeakReference to it somewhere else in your code 

    Generally the fix for this will be to make sure you call 
    Component::setLookandFeel (nullptr) on any components that were still using 
    it before you delete it, or call LookAndFeel::setDefaultLookAndFeel (nullptr) 
    if you had set it up to be the default one. This assertion can also be avoided by 
    declaring your LookAndFeel object before any of the Components that use it as 
    the LookAndFeel will be destroyed before the Components. 

    Deleting a LookAndFeel is unlikely to cause a crash since most things will use a 
    safe WeakReference to it, but it could cause some unexpected graphical behaviour, 
    so it's advisable to clear up any references before destroying them! 
*/ 

그래서 당신이 그것을 삭제하기 전에 아마의 소멸자에, 당신의 슬라이더에 setLookAndFeel (nullptr)를 호출 할 필요는 그것의 부모 구성 요소.

+0

감사합니다. 도움이되었습니다. – pajczur