serialization 직렬화 = Encoding / iOS -> 서버 데이터 전송(문자열로 변환)
deserialization 역직렬화 = Decoding / 서버 -> iOS 이용자들이 사용할 수 있는 객체로 변환한 데이터
- 네트워크 통신(서버 데이터, 리소스)시 받아올 데이터가 많을때 데이터를 분할해서 가져오는 방법
-사용자의 스크롤 시점을 계산
-스크롤이 필요한 앱 사용시 사용자가 스크롤을 할 수도있고 안할수도 있기 때문에 사용자의 상황에 맞춰 데이터를 가져올지 안가져올지 정함
1.will display cell 메서드
호출 시점: 테이블뷰가 특정 시점에 그려줄때 / 미리 알려줄때? / 사용자가 이 시점에 보게될거니 미리 준비해라
실제로 그려주는 담당 = cellforRowAt
func tableView(_ tableView: UITableView, willDisplay cell:
UITableViewCell, forRowAt indexPath: IndexPath) {
}
권장 하는 방법은 아님: '보여줄 예정'이기 때문에
->보이지 않는 셀을미리 보여준다? -> 적당한 타이밍을 잡기 어렵다
-마지막 셀을 스크롤 할 때의 시점을 명확하게 설정하기 여렵다.
2.scrollview의 scroll 시점 활용
-페이지의 콘텐츠를 모두 봤을때 ( 맨 밑으로 내려왔을때) 다음 페이지를 준비
-스크롤뷰의 스크롤 상태를 감지할 수 있는 메서드 활용
func scrollViewDidScroll(_ scrollView: UISCrollView) {
}
-3가지 방법 중 보편적으로 가장 많이 활용된다.
3.UITableViewDataSourcePrefetching Protocol 활용
-iOS10 이상 지원.
-받아올 이미지 데이터의 용량이 클때 유리하다.
-스크롤 성능이 향상된다.
-컬렉션뷰나 테이블 뷰의 데이터 소스 프로토콜 활용하는 것 처럼 데이터 소스 프리패칭(prefetching) 활용
-2번째 방법보다 보편적임
3-1.프리패칭 활용
extension ImageSearchViewController: UICollectionViewDataSourcePrefetching {
//셀이 화면에 보이기 직전에 필요한 리소스를 미리 다운 받는 기능
func collectionView(_ collectionView: UICollectionView, prefetchItemsAt indexPaths: [IndexPath]) {
//어떻게 네트워크 연결을 하면 될까
print("=====\(indexPaths)")
}
//취소
func collectionView(_ collectionView: UICollectionView, cancelPrefetchingForItemsAt indexPaths: [IndexPath]) {
print("=====취소\(indexPaths)")
}
}
[SeSAC] 20220808_TIL (API관련 파일 관리하기) (0) | 2022.08.08 |
---|---|
[SeSAC] 220805_TIL (클로저, Sync, Async) (0) | 2022.08.05 |
[SeSAC] 20220803_TIL (인증키 관리(gitignore), pagenation, 타입 추론의 속도, 소켓 vs HTTP, 일급객체) (1) | 2022.08.03 |
[SeSAC] 220802_TIL (json구조분석, API KEY, REST API) (0) | 2022.08.02 |
[SeSAC] 220801_TIL (깔끔한 코딩, StoryBoard Identifier, UserDefaults, 서버통신, Insomnia, json) (0) | 2022.08.01 |