2011-07-27 3 views
0

내 응용 프로그램이 완전히 충돌 (치명적인 오류)하여 전체 스택 트레이스와 "stdout 및 stderr 연결 오류가 있습니다. 이상한 일은 iPhone 시뮬레이터를 종료하지 않으면, .. 모노크롬을 사용하여 아이폰 사진 앨범에서 선택하면 크래시가 발생합니다.

는 사진 라이브러리를 제공 할 때까지 picker.SourceType = UIImagePickerControllerSourceType.PhotoLibrary이 모든 것이 잘 작동

을 클릭하고, 내가 어떤 충돌이없는, 내 응용 프로그램의 워크 플로우를 두 번 통과

나는 PhotoLibrary과 SavedPhotosAlbum 모두 시도 사진 라이브러리 내부의 이미지를 볼 수 있습니다. 충돌이 발생할 때입니다.

picker.SourceType = UIImagePickerControllerSourceType.SavedPhotosAlbum 일 때 앨범이 잘로드되고 이미지를 선택할 수도 있습니다. 이미지를 선택하면 이미지 등을 편집 할 수 있습니다. 일단 완료되면 선택을 누르십시오. 그것은 충돌합니다.

다시 충돌이 발생하면 워크 플로를 진행할 수 있으며 정상적으로 처리됩니다.

이것은 매우 이상합니다. 어떤 아이디어?

감사합니다.

+0

Monotouch에서 어떻게 작동하는지 잘 모르겠습니다. 하지만이 동작은 다소 당신의 delegete에 UIPickerControl 대리자 메서드를 구현하지 않은 일관성이 보인다. – fsaint

답변

2

이 똑같은 문제가있었습니다. ImagePickerController 객체가 가비지 수집되는 것으로 밝혀졌습니다. 메소드 내부에서 속성을 선언하고 있습니까 (예 : 버튼 터치 이벤트). 클래스의 시작 부분에서 속성을 선언하면이 문제가 해결 된 것입니다. 코드 샘플 :

UIImagePickerController picker; 

//snip 

void HandlePhotoBtnTouchUpInside(object sender, EventArgs e) 
{ 
    picker = new UIImagePickerController(); 
    ImagePickerDelegate imgDel = new ImagePickerDelegate(); 
    picker.Delegate = imgDel; 

    picker.SourceType = UIImagePickerControllerSourceType.PhotoLibrary; 
    PresentModalViewController(imagePicker, true); 
} 

ImagePickerDelegate 클래스

은 아주 간단합니다, 나는 단지 FinishedPickingMedia 방법을 무시했습니다.

+0

당신은 생명을 구하는 사람입니다. 두 시간 동안 머리를 두 드린다. 내가해야 할 일은 내 방법 밖에 그것을 선언하는 것이었다. Monotouch 가비지 수집은 공격적입니다. 나는 이것이 동일한 문제를 가지고 다른 사람들을 도울 수 있기를 바랍니다. 다시 한번 감사드립니다. – apexdodge

관련 문제