- setNeedsLayout
- 호출 시 needsLayout flag가 YES로 변경.
- 호출 즉시 뷰가 적용되는 것이 아니라 다음 run loop에 뷰 변경이 적용
- 여러 부분에서 호출하더라도, 다음 run loop에서 한번만 적용
- layoutSubview가 호출 됨 - layoutIfNeeded
- 호출 시 needsLayout flag를 체크하여 YES인 경우 뷰 변경을 즉시 적용.
- 호출 즉시 뷰 변경을 적용하기 때문에 여러 부분에서 사용할 경우 성능상의 문제가 생길 수 있음
- layoutSubview가 호출 됨 - setNeedsDisplay
- 호출 시 needsDisplay flag가 YES로 변경.
- 호출 즉시 뷰가 적용되는 것이 아니라 다음 run loop에 뷰 변경이 적용
- 여러 부분에서 호출하더라도, 다음 run loop에서 한번만 적용
- drawRect가 호출 됨 - displayIfNeeded
- NSView, CALayer에 포함된 메소드
- 호출 시 needsDisplay flag를 체크하여 YES인 경우 뷰 변경을 즉시 적용.
- 호출 즉시 뷰 변경을 적용하기 때문에 여러 부분에서 사용할 경우 성능상의 문제가 생길 수 있음
- drawRect가 호출 됨 - 4가지 메소드의 차이를 확인하기 위한 실습 결과(for문을 통해 textView의 text를 바꿔봄)
- setNeedsDisplay: for문 완료 후 drawRect 메소드 단 한번 호출. 뷰는 for문 완료 후 적용.
- displayIfNeeded: drawRect 메소드 호출 및 뷰 적용 X
- setNeedsDisplay & displayIfNeeded: drawRect 매번 호출. 뷰는 for문 완료 후 적용. - 뷰 변경은 for문 완료 후 한번만 변경.
'프로그래밍 > iOS' 카테고리의 다른 글
KVC(Key-Value Coding) & KVO(Key-Value Observing) (0) | 2017.04.18 |
---|---|
비동기 처리방법 및 장/단점(GCD 제외) (0) | 2017.04.17 |
Run Loop (0) | 2017.04.12 |
NSHashTable (0) | 2017.04.11 |
NSAutoreleasePool VS @autorelease block (0) | 2017.04.10 |