개발자로써 좋은성능을 이끌어 내는것은 중요합니다.
느리거나 메모리문제가 생긴다면 사용자들은 안좋은 리뷰를 마구 쓸겁니다.
(이 원글을 쓰신분은 6년동안 애플에서 코코아프레임워크를 개발해 왔다고 합니다.)
여기에 가장 효율적인 성능 팁들을 나열한다고 합니다.
UILabel은 비쌉니다.
레이블은 메모리 사용측면에서 가벼울것처럼 생각이 되지만, UILabels는 실제로는 비쌉니다. 비트맵으로 저장되기에 메가바이트의 메모리를 금방 사용합니다.
메모리 사용량은 단색이냐 아니냐에 따라 달라집니다.
컬러 레이블은 흑백 레이블에 비해 4배 더 많은 메모리를 사용합니다.
width * height * contentsScale^2 * (1 byte per pixel)
width * height * contentsScale^2 * (4 bytes per pixel).
•
414 * 100 * 3^2 * 1 = 372.6kB
(흑백)
•
414 * 100 * 3^2 * 4 = ~1.49MB
(컬러)
일반적으로 셀이 재사용 큐에 들어갈때 라벨을 그대로 두는것은 메모리 낭비입니다. 셀이 재활용 된다면 대부분의 경우 레이블의 텍스트 값이 변경될 가능성이 높기 때문입니다.
그래서 레이블을 숨기도록 설정하거나
tableView(_:didEndDisplaying:forRowAt:)
collectionView(_:didEndDisplaying:forItemAt:)
Swift
복사
를 이용하여 레이블의 텍스트를 없애는것이 좋습니다
직렬큐를 되도록이면 사용하라
UI에 영향주지않는 블록을 글로벌큐로 빼는것은 좋지 못합니다.
func textDidChange(_ notification: Notification) {
let text = myTextView.text
myLabel.text = text
DispatchQueue.global(qos: .utility).async {
self.processText(text)
}
}
Swift
복사
메모리 경고
•
Simulator에서 다음을 사용합니다.Simulate Memory Warning
메뉴 항목.
•
[[UIApplication sharedApplication] performSelector:@selector(_performMemoryWarning)];
tag는 사용하지마세요
느려요.
원문