나는 작성하고 호스팅하는 WCF 서비스의 데이터 형식을 얻는 iPhone 응용 프로그램을 만들고 있습니다. MonoTouch를 사용하여 iPhone 클라이언트를 작성하고 있습니다. 나는 나의 스크린 중 하나에 아이템 목록 (최대 100 개 아이템)을 보여주는 테이블을 가지고있다. 각 항목에는 사용자 정의 셀에 표시 할 이미지가 있습니다. 모든 이미지를로드해야하는 것을 줄이기 위해 먼저 항목 목록을로드 한 다음 서비스를 호출하는 스레드를 실행하여 GetCell 메서드의 각 셀 이미지를 검색합니다. 이미지가 검색되면 사전에 저장하고 두 번째 서비스 호출을 저장하기 위해 셀이 렌더링 된 다음에 그 이미지를 검색합니다. 즉, 필요한 경우에만 이미지가로드되고 이후에는 사전에서 한 번로드됩니다. 다음 기사와 비슷한 코드를 사용하고 있습니다.Monotouch - 많은 WCF 서비스 호출
는이 에뮬레이터에서 잘 작동하지만이 테스트 장치 (로컬 와이파이에서 아이폰 4)에 배포 할 때 나는 나를 도울 수 누군가를 바라고 있어요 몇 가지 문제가 발생합니다.
처음에 목록을로드하면 모두 정상입니다. 목록에서 오른쪽으로 스크롤하면 (손가락을 빠르게 위로 스 와이프) 장치가 상당히 심하게 흔들립니다. 서비스에 대한 호출이 스크롤을 지연시키는 것처럼 보입니다. 나는 셀에서 결과 이미지를 그리는 코드를 꺼내서 루틴에서이 값을 줄였습니다. 이것이 범인이라고 짐작했지만, 여전히 불분명합니다. ThreadPool.QueueUserWorkItem 메서드를 사용하여 내 'GetImage'메서드를 호출하고 내 사용자 지정 셀 컨트롤러에 대한 참조를 전달하므로 다른 스레드에서 호출이 전달 될 것으로 예상하므로 프로그램이 UI를 방해하지 않고 계속 수행되어야합니다. 하지만 내가 셀 컨트롤러에 대한 참조를 전달하는 것이 가상 목록이라는 문제를 일으키는 지 궁금합니다.
둘째로 목록을 위아래로 빠르게 스크롤하여 많은 수의 전화를 걸고 목록 기준을 변경하기 위해 이전 화면으로 돌아 가면 기존 통화가 끝날 때까지 기다려야하는 것처럼 보입니다. 나는 나의 기준 페이지에서 다른 것을 만들 수 있기 전에 돌아왔다. 더 이상 필요없는 화면에서 이동할 때 기존 통화를 무시할 수있는 방법이 있습니까?
미리 도움을 청하십시오.
A1.
나중에 참조 할 수 있도록 위의 모든 작업을 수행하는 Miguel의 ImageLoader 클래스를 살펴 보시기 바랍니다. https://github.com/migueldeicaza/MonoTouch.Dialog/blob/master/MonoTouch.Dialog/Utilities/ImageLoader .cs – Darbio
정말 어떻게 일을하는지에 따라 다릅니다. 제대로 구현되지 않으면 UITableViews 고르지 수 있습니다. 이 공간에서 함정을 최적화하고 피하는 데 대한 광범위한 프레젠테이션의 주제입니다. –