상세 컨텐츠

본문 제목

[SeSAC] 220804_TIL (Serialization, Pagenation)

IOS/TIL

by 카키IOS 2022. 8. 4. 15:08

본문

1.Serialization

serialization 직렬화 = Encoding / iOS -> 서버 데이터 전송(문자열로 변환)

deserialization 역직렬화 = Decoding / 서버 -> iOS 이용자들이 사용할 수 있는 객체로 변환한 데이터

 

2.iOS Pagenation

- 네트워크 통신(서버 데이터, 리소스)시 받아올 데이터가 많을때 데이터를 분할해서 가져오는 방법

-사용자의 스크롤 시점을 계산

-스크롤이 필요한 앱 사용시 사용자가 스크롤을 할 수도있고 안할수도 있기 때문에 사용자의 상황에 맞춰 데이터를 가져올지 안가져올지 정함

 

3.Pagenation 구현 방법

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)")
    }
}

 

 

 

728x90
반응형

관련글 더보기