2010-03-01 6 views
3
나는 다음과 같은 코드를 사용하고

를 많이 소모합니다. 그러나 마지막 줄에 주석을 달면 발생하지 않습니다. 가능한 이유는 무엇입니까?있는 UIButton setBackgroundImage 메모리

편집 :

p.placeImage == 전무와 imageNamed 경우 : "bg_place_noimg.png"@를 사용하는 메모리 사용량이 정상입니다. p.placeImage는 인터넷에서 다운로드 한 NSData 이미지를 저장하기 위해 Core Data에서 사용하는 변형 가능한 값입니다.

답변

1

마지막 줄을 주석 처리하면 메모리가 덜 소모된다는 사실에 놀라지 않습니다. 해당 이미지를 단추의 배경으로 설정하면 단추로 이미지를 유지할 가능성이 높으므로 이미지는 메모리에 남아 있습니다. 단추 배경으로 이미지를 적용하지 않으면 UIImage의 보유 횟수가 0이므로 필요할 경우 시스템에서 메모리를 다시 확보 할 수 있습니다.

imageWithData와 imageNamed의 차이에 대한 Kristopher의 이론은 입니다. 올바른입니다. UIImage에 대한 설명서에서 각각의 이니셜 라이저에 대한 토론 섹션을 확인하십시오.

0

잘 모르겠지만 imageNamed: 메서드가 매번 동일한 이미지를 반복해서 반환하는 반면 imageWithData:은 매번 완전히 새로운 이미지를 생성합니다.

동일한 이미지를 캐시하고 다시 사용하려면 일부 코드를 추가해야 할 수도 있습니다. 예를 들어 URL을 이미지 사전에 키로 사용하고 이전에로드되지 않은 URL에 대한 새 이미지 만 만들 수 있습니다.

관련 문제