Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon MVVMCross의 바인딩보기시 NULL 참조 예외를 디버깅하려면 어떻게합니까?


MVVMCross의 바인딩보기시 NULL 참조 예외를 디버깅하려면 어떻게합니까?


MVVMCross의 바인딩보기에 문제를 식별하고 해결하기위한 몇 가지 단계가 필요합니다. 이 문제에 접근하는 방법에 대한 자세한 안내서는 다음과 같습니다.

1. 예외의 출처를 식별 **

- 스택 추적을 확인하십시오 : 스택 추적은 NULL 참조 예외가 발생하는 위치를 나타냅니다. 이것은 당신의 관점,보기 모델 또는 MVVMCross 자체에있을 수 있습니다.
- 일반적인 문제 : 일반적인 소스에는 등록되지 않은 서비스, 널보기 모델 또는 잘못 구성된 바인딩이 포함됩니다.

2. ViewModel 및 바인딩 설정 확인 **

- ViewModel 초기화 :보기 모델이 올바르게 초기화되어보기에 설정되어 있는지 확인하십시오. MVVMCross에서는 일반적으로 자동으로 발생하지만 뷰의 'ViewModel'속성을 확인하여 확인할 수 있습니다.
- 바인딩 구성 : 바인딩이 올바르게 구성되어 있는지 확인하십시오. `createBindingset '을 사용하여 바인딩을 정의하고 유형이 일치하는지 확인하십시오 (예 :`mainView` 및'mainViewModel ').

3. 바인딩에서 NULL 참조 점검 **

- 속성 경로 : 바인딩의 속성 경로가 올바르고 뷰 모델에 속성이 존재하는지 확인하십시오. 예를 들어,`vm => vm.myproperty`에 바인딩하는 경우 'myproperty'가 null이 아니며 올바르게 정의되어 있는지 확인하십시오.
- 늦은 초기화 : 속성이 나중에 초기화되면 (예 :`viewdidload`에서) 초기화 후 바인딩이 적용되는지 확인하십시오.

4. 동적 콘텐츠에 지연된 바인딩 사용 **

- 컨텐츠 또는 컨트롤을 동적으로 생성하는 경우 뷰가 완전히 구성된 후에 바인딩이 적용되도록`Delidbind '를 사용하는 것을 고려하십시오. 이것은 사용자 정의 컨트롤 또는 동적 목록으로 작업 할 때 특히 유용합니다.

5. 적절한 IOC 등록 보장 **

- 서비스 등록 : 뷰 모델에서 서비스를 사용하는 경우 IOC 컨테이너에 등록되어 있는지 확인하십시오. MVVMCross는이 목적으로`imvxiocprovider`를 사용합니다.
- InitializelastChance : 플랫폼 별 IOC 등록을 수행하는 경우 [4]에 설명 된 문제와 같은 문제를 피하려면`base.initializelastchance () 호출을 요청하십시오.

6. 맞춤형 바인딩 문제 **

- 사용자 정의 바인딩을 사용하는 경우 [5]에 표시된 것처럼 'filltargetfactoriors'를 재정의하여 대상 바인딩 클래스가`setup.cs '에 올바르게 구현되고 등록되어 있는지 확인하십시오.

7. 디버깅 기술 **

- 중단 점 : 중단 점을 사용하여 뷰 모델의 상태를 검사하고 런타임시 바인딩을 검사하십시오.
- 로깅 : MVVMCross 로깅을 활성화하여 바인딩 작업 및 잠재적 오류에 대한 자세한 정보를 얻을 수 있습니다.

8. MVXASYNCCOMMAND 문제 **

- 'mvxasynccommand'를 사용하는 경우 [1]에 설명 된대로 명령을 구성하기 전에 'mvx.iocprovider`가 초기화되어 있는지 확인하십시오. 이것은 단위 테스트 시나리오에 중요합니다.

이 단계를 수행하면 MVVMCross의 뷰 바인딩과 관련된 대부분의 NULL 참조 예외를 식별하고 해결할 수 있어야합니다.

인용 :
[1] https://stackoverflow.com/questions/53597908/mvvm-cross-null-references-hen-unit-testing-mxvasynccommand/53618570
[2] https://stackoverflow.com/questions/56531225/problem-with-binding-to-mvxview-with-xamarin-ios-and-mvvmcross
[3] https://github.com/mvvmcross/mvvmcross/issues/1378
[4] https://stackoverflow.com/questions/18954938/nullreference-exception-during-binding-with-mvvmcross
[5] https://www.mvvmcross.com/documentation/advanced/custom-data-binding
[6] https://stackoverflow.com/questions/40419789/mvvmcross-platform-exceptions-mvxexception-bindingcontext-is-null-during-mvxadap/40420356
[7] https://www.mvvmcross.com/documentation/advanced/mvxnotifytask
[8] https://www.mvvmcross.com/documentation/fundamentals/data-binding