2014-10-24 2 views
1

내 응용 프로그램을 디버깅하려하지만 메모리가 계속 증가합니다.UIImageView UIKit setImageWithURL 메모리 사용량

AFNetworking이 포함 된 웹 서비스에서 JSON을 가져 오는 앱이 있습니다. UIKit + AFNetworking을 사용하여 사용자 정의 XIB 표 셀에있는 UIImageView의 JSON에서 가져온 URL 문자열을로드합니다. 나는 setImageForURL을 사용합니다.

새로운 JSON을로드하고 새로운 이미지 URL을로드하면 매번 메모리 사용량이 2 ~ 7MB 씩 증가합니다. 이전 이미지는 UI에서 새로운 이미지로 바뀝니다. 라이브 메모리 사용량이 올라갑니다. JSON 등을 보유하고있는 배열을 살펴 보았습니다. 누수가 없습니다.

어떤 이미지 캐싱이 진행되는 것으로 의심되지만 setImageWithURL과 함께 UIImageView를 사용할 때 이미지 캐싱과 관련된 정보를 본 적이 없습니다. 그래도 imageNamed을 사용하여 메모리 문제를 봤습니다.

setImageWithURL의 메모리 문제는 imageNamed입니까?

답변

0

setImageWithURL: AFNetworking에서이 방법으로 다운로드 한 이미지의 캐싱을 처리합니다. 다음 번에 동일한 URL에 대해 호출하면 캐시가 먼저 캐시되었는지 확인하여 이미지가 캐시되는지 확인합니다 (다시 네트워크에 갈 필요가 없음). AFNetworking의 API에서

:

비동기 지정된 URL에서 이미지를 다운로드하고, 요청이 완료되면 그것을 을 설정합니다. 수신자 에 대한 이전 이미지 요청이 취소됩니다. 이미지가 로컬에 캐시 된 경우 이미지가 즉시 설정되고 그렇지 않으면 지정된 자리 표시 자 이미지 이 즉시 설정되고 요청이 완료되면 원격 이미지가 설정됩니다. 기본적으로 URL 요청은 Accept 헤더 필드 값이 "image/*"이고 캐시 정책이 NSURLCacheStorageAllowed이고 제한 시간 간격이 30 초이며 은 쿠키를 처리하지 않도록 설정되어 있습니다. 다르게 URL 요청을 구성 setImageWithURLRequest:placeholderImage:success:failure:

를 사용하는 것은 그래서 참 따라서 캐시, 메모리 사용이 있습니다.

희망이 있습니다.

+0

그래서 내 응용 프로그램을 메모리 돼지로 만들 수 있습니까? 귀하의 경험에서 애플은 이러한 종류의 애플 리케이션을 거부합니까? – noobsmcgoobs

+0

@noobsmcgoobs 여기에있는 문제는 애플이 무엇을 할 것인가에 관한 것이 아닙니다. AFNetworking을 사용하여 이미지를 다운로드하는 이유는 무엇입니까? 캐시해야합니까? 앱이 너무 많은 메모리를 사용하므로 이미지가 커야하므로 테이블 뷰에없는 것 같습니다. 우리에게 상황을 말해 주면 우리는 해결책이 될지도 모릅니다. –

+0

사용자는 위치 기반 이미지를 가져오고 새로운 위치로 이동할 경우 새 이미지로 테이블보기를 새로 고칠 수 있습니다. 오래된 미디어는 어떤 식 으로든 유지되지 않습니다. EG - SF에서 위치 미디어를로드 한 다음 NYC로 이동하여 새로 고침합니다. SF 미디어는 tableView에서 NYC 미디어로 대체됩니다. SF 미디어는 어떤 식 으로든 유지되지 않습니다. AFNetworking은 JSON을 반환하는 API 호출을 만드는 방법입니다. AF의 UIImageView 메서드 setImageWithURL을 사용하여 미디어 URL을 UIImageView에로드합니다. – noobsmcgoobs