2014-05-09 2 views
0

나는 최근에 posted 윈도우가 갑자기 버튼을 20 번 정도 클릭 한 후 사라질있는 MonoMac의 버그에 대한합니다. 그 버그는 Xamarin.Mac에 영향을 미치지 않는 것으로 밝혀졌습니다. 그래서 나는 그 프로젝트로 전환했습니다.Xamarin.Mac 창이 갑자기 사라지는 이유는 무엇입니까?

하지만 이제는 다른 상황에서 사실상 동일한 버그가 나타납니다. NSTextField에 몇 줄의 텍스트를 입력하면 정확히 같은 방식으로 창이 사라집니다. 오류 없음, 예외 없음; 그냥 사라진다. 멍청 하군!

저는 이것을 사소한 프로젝트에서 재현했습니다 : 새로운 빈 Xamarin.Mac 프로젝트를 만들고 this code을 새 파일에 추가하고 실행하여 직접 볼 수 있습니다. 그런 다음 키보드를 조금 으깨십시오. 5 또는 6 줄 뒤에 창이 사라집니다.

(응용 프로그램 메뉴는 로그 메시지를 작성하고 난 메뉴 명령을 선택하면 내 코드를 실행, 작업을 계속합니다. 응용 프로그램 자체가 추락 한 것처럼이 표시되지 않습니다 그래서.)

을 이상하게도,이 필드가 IsFlipped가 무시 된 NSView 하위 클래스 안에있을 때만 발생하는 것으로 보입니다. IsFlipped가 true 또는 false를 반환하는지 여부는 중요하지 않습니다. 메서드가 전혀 없으면 버그가 발생합니다. 주석 처리 된 경우 버그가 발생하지 않습니다.

그래서 : 다른 사람이 Xamarin.Mac 버그 이런 종류의로 실행 했습니까? 아마도 다른 맥락에서 근본 원인에 대한 더 많은 단서를 줄 수 있을까요? Xamarin 초보자를위한 모든 디버깅 정보?

(내가 IsFlipped을 피함으로써 일부 프로젝트에 해결 할 수 알고,하지만 난 그냥 다른 방법으로 저를 물려 팝업 것이라고 우려하고있다.)

+0

당신은 기본 IsFlipped를 호출합니까? 나는 내 전화로 코드를 확인할 수 없다. 또한 Mono에 버그를 제출했거나 최신 빌드를 받았습니까? –

+0

Nevermind 나는 코드가 프로젝트가 될 것이라고 생각했다. –

+0

"return base.IsFlipped && false"를 시도하자. haha ​​ –

답변

2

OK, 그것은 밝혀 그이 ISN ' Xamarin의 버그 .Mac이긴하지만 내 코드에서. NSWindow 객체에 대한 참조가 유지되지 않았으므로 범위를 벗어났습니다. 가비지 컬렉터가이를 알아 차리자 마자 폐기되었으며 GUI 창이 찢어졌습니다.

우리가해야하는 일은 창 (예 : AppDelegate 클래스)에 대한 참조를 유지하면 문제가 해결됩니다.

자마린 (Xamarin)의 크리스 하몬 (Chris Hamons)에게 모자를 벗기고 누가 바로이 문제에 뛰어 들었고 나를 위해 문제를 빨리 발견했습니다.

관련 문제