전자 메일 주소를 포함하여 웹 API에서 데이터를 가져 오는 iPhone 응용 프로그램을 만들고 있습니다. 테이블 셀에있는 각 이메일 주소와 연결된 이미지를 표시하고 싶습니다. 따라서 주소록에서 이미지를 검색하고 전자 메일 주소가 책에 없으면 기본값으로 되돌아갑니다. 이 잘 작동하지만 몇 가지 문제가 있습니다iPhone에서 비동기 이미지 캐싱에 대한 최선의 방법은 무엇입니까?
성능 : 나는 이메일 주소 (또는 전화 번호)에 의해 주소록 레코드에 대해보고를 위해 찾은 조리법 rather slow 보도됩니다. 그 이유는 모든 주소록 레코드를 반복해야하며 이미지가있는 각 레코드에 대해 모든 전자 메일 주소를 반복하여 일치하는 것을 찾습니다. 물론 큰 주소록의 경우 시간이 많이 걸릴 수 있습니다.
테이블 셀 : 그래서 이미지를 찾고 모든 것을 한 번에 찾아야하는 모든 이메일 주소를 수집 할 것이라고 생각했습니다. 이렇게하면 모든 주소에 대해 한 번만 책을 반복합니다. 그러나 이것은 각 셀이 하나의 전자 메일 주소에 해당하는 테이블 셀에는 적합하지 않습니다. 나는 어떤 세포 (잠재적으로 천천히)를 표시하기 전에 모든 이미지를 모으거나 각 세포가로드 될 때 각 이미지를 찾도록해야한다. (더 느리다. 에 대한 일치를 찾기 위해 책을 반복 할 필요가있다. 각 이메일 주소).
비동기 조회 : 그래서 나는 그들을 일괄 적으로 보았을 것이라고 생각했지만, 비동기 적으로는
NSInvocationOperation
을 사용했습니다. AddressBook에있는 각 이미지에 대해 앱 샌드 박스에 미리보기 이미지를 저장합니다. 그런 다음 각 셀은이 파일을 참조하고 존재하지 않는 경우 기본값을 표시 할 수 있습니다 (책에 없거나 아직 찾지 못했기 때문에). 나중에 이미지가 비동기 조회에서 발견되면 다음에 이미지를 표시해야 할 때 갑자기 나타납니다. 이는 이미지를 주기적으로 재생할 때 (예 : 주소록에서 이미지가 변경된 경우) 잘 작동합니다. 하지만 내 애플 리케이션의 특정 인스턴스에 대한 이미지가 실제로 잠시 동안 표시되지 않을 수 있습니다.비동기 표 셀 조회 : 이상적으로, 나는 그것을 다운로드 한 후 이미지와 테이블 셀을 업데이트 markjnet's asynchronous table cell updating 같은 것을 사용하십시오. 그러나이 작업을하려면 각 셀이 표시된대로 캐시 된 아이콘이 샌드 박스에없는 경우
NSInvocationOperation
작업을 스핀 (spin off)해야합니다. 그러나 각 주소록 전체를 비효율적으로 반복하는 방법으로 돌아 왔고 방금 새로운 이메일 주소를 다 다운로드 한 경우 많은 메일을 보낼 수 있습니다.
그럼 내 질문은 : 다른 사람들이 어떻게합니까? 나는 Tweetie2를 만지작 거리며 테이블 셀을 비동기 적으로 업데이트하는 것처럼 보입니다. 필요로하는 모든 이미지에 대해 별도의 HTTP 요청을 보내는 것으로 가정합니다. 그렇다면 이메일 주소로 로컬 주소록을 검색하는 것이 덜 효율적이지 않으므로 최선의 방법이라고 생각합니다. 주소록 검색과 관련된 성능 문제는 걱정하지 않으셔도됩니다.
그렇다면 캐싱에 대한 최선의 방법은 샌드 박스에 미리보기 이미지를 저장하는 것입니까? 그리고 주소록의 모든 변경 사항으로 모든 축소판을 업데이트하기 위해 새로운 일자리를 만들고 싶다면 하루에 한 번씩 이렇게 말하기에 가장 좋은 방법은 무엇일까요?
나머지는 어떻게 이런 종류의 문제를 해결합니까? 제안을 많이 부탁드립니다!
감사합니다. 그래서 한 번에 하나의 주소를 찾는 솔루션을 실제로 구현했지만, 미리보기 이미지를 만들어 샌드 박스 문서 디렉토리에 저장합니다. 그리고 네, 그것은 그들이 처음으로 표시해야 할 때 주소록의 이미지를 찾습니다.캐시 된 이미지를 샌드 박스에서로드하는 것이 비동기 일 필요는 없다는 것을 충분히 빨리 생각해야합니다. 당신이 설명하는 최신 수준을 필요로하지 않으므로 캐시 된 미리보기 이미지의 정기적 인 업데이트를 예약하는 방법을 살펴 보겠습니다. 예, 주소록을 통해서만 반복합니다. 모두를 위해 한 번. – theory
궁금한 점, 한 번에 하나의 주소를 검색 할 수는 있지만 주소록을 한 번만 반복하면됩니까? – erikprice