당신은 NSCalendars
많은 만들 필요가 없습니다 - 당신이 autoupdatingCurrentCalendar
를 재사용하는 경우 (예를 들어,이 GraphController
바르로 저장) 및 -dateDifferenceFromDate:to:
에 그것을 통과, 당신은 (거의) 일정 생성을 제거 할 수 있습니다.
UPDATE
수는 속도 향상에만 나 포기 기억이 도움이?
이 제안의 도움이되는 가장 좋은 방법은 측정입니다. 캡쳐 화면은 ICU 시간대 (캘린더에서 사용) 작성을 가장 중요한 부분으로 제안합니다. 당신이 얼마나 많은 시간을 당신이 호출했는지 (즉, 당신이 얼마나 많은 수를 생성했는지, 구현이이 API를 통해 정보를 공유/캐시한다면) 그래프를 그릴 때 ... 그러나 당신이 제시하는 정보는 그것이 '많은 것'이라고 믿게 만든다. 통화 당 하나의 캘린더는 -dateDifferenceFromDate:to:
입니다.
그렇습니다. 불필요한 중복 객체를 제거 할 수 있습니다. [NSCalendar currentCalendar]
은 싱글 톤을 반환하지 않습니다 (샘플에서는이를 보여줍니다).
또한 NSDateComponents
은 일정 인스턴스를 참조 할 수 있습니다.
캘린더 만들기는 메모리뿐만 아니라 매우 많은 시간이 소요될 수 있습니다.
또한 NSCalendar
은 이 아니며 스레드 안전합니다.
그래서 프로그램이 불필요하게 많은 임시 파일을 생성합니다. 메모리의 대부분은 (전부는 아닐지라도) '곧'나오 겠지만, '계산'해야 할 일이 많다면 자동 배출 풀에 막대한 양의 예금이있을 수 있습니다. 이를 줄이기 위해 내부 오토 릴리즈 풀을 생성 할 수 있지만, 하나의 캘린더를 사용하면 속도와 메모리를 쉽게 최적화 할 수 있습니다.
많은 시스템 API가 막후에서 캐시되므로 놀라운 메모리 증가를 가져 오지만 IDK가 이러한 경우 그 중 하나입니다.
이 블로그 게시물도 재미있을 수 있습니다 http://www.mikeabdullah.net/NSCalendar_currentCalendar.html
하지만 실제로는 그냥 후 측정 한 자동 업데이트 일정을 사용해보십시오 것입니다. 그러면 얼마나 도움이되는지 알 수 있습니다. 구현.
말을 ... "dateDifferenceFromDate는"반드시 누출 1메가바이트에 대해 책임을지지 않습니다 것을 하드. 코드의 무언가가 UI의 일부를 유지하고 있거나 코드에 사이클을 유지하고있을 가능성이 있습니다. 코드를 더 이상 보지 않고도 할 수있는 일은 많지 않습니다. –
잘 - 명확하게 dateDifferenceFromDate는 범인이 아닙니다. GraphController :: drawGraph는 메모리 스파이크를 볼 때 UI를 업데이트하는 것으로 보입니다. drawGraph에 더 많은 코드를 붙여 넣을 수 있습니까? – Jailbroken
확인. 여기 http://pastebin.com/yvvX6GZM 크고 더러운입니다. 하지만 가장 흥미로운 점은 내가 같은 속성을 가지고 있다는 것입니다. '@property (nonatomic, retain) UIImageView * drawArea' drawGraph 끝 부분에서 변경합니다. –