์๋ฒ ํต์ ์ ์ ์ ๋ณด์ฌ์ค UIImage ๋ณํ ์์
urlString โถ๏ธ url โถ๏ธ image
url๋ก ๋ฐ๊พธ๊ณ ๋๋ image๋ก ๋ฐ๊พธ๋ ๊ณผ์ ์ ์ด๋์์ ์งํํ๋ ๊ฒ์ด ์ข์๊น?
- ์๋ฒ ํต์ ์์ ์์ ํ ์ง => ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฌ๊ณ , ์ฌ์ฉ์๊ฐ ๋ณด์ง ์์ ์ ์๋ ์ ๋ณด์ ๋ํด์๋ ์์ ์ ์งํํ ์ ์์ด์ ๋นํจ์จ์
- ์ ์์ ์ฒ๋ฆฌํ ์ง => ์กฐ๊ธ ๋ ์ ์ ํด๋ณด์ธ๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก ์๋ฒ ํต์ ์ ์ ์์ ํ ๊ฒฝ์ฐ ์ ์ด ๊บผ๋ด์ง ๋๋ง๋ค ์์ฒญ์ด ๋ค์ด๊ฐ call ์๊ฐ ์ฆ๊ฐํ ์ ์๋ค.
Alamofire์ ๋ฐ์ดํฐ ๋ฐ์์ค๋ ๋ฉ์๋(Response Handler)
// Response Handler - Unserialized Response
func response(queue: DispatchQueue = .main,
completionHandler: @escaping (AFDataResponse<Data?>) -> Void) -> Self
// Response Serializer Handler - Serialize using the passed Serializer
func response<Serializer: DataResponseSerializerProtocol>(queue: DispatchQueue = .main,
responseSerializer: Serializer,
completionHandler: @escaping (AFDataResponse<Serializer.SerializedObject>) -> Void) -> Self
// Response Data Handler - Serialized into Data
func responseData(queue: DispatchQueue = .main,
dataPreprocessor: DataPreprocessor = DataResponseSerializer.defaultDataPreprocessor,
emptyResponseCodes: Set<Int> = DataResponseSerializer.defaultEmptyResponseCodes,
emptyRequestMethods: Set<HTTPMethod> = DataResponseSerializer.defaultEmptyRequestMethods,
completionHandler: @escaping (AFDataResponse<Data>) -> Void) -> Self
// Response String Handler - Serialized into String
func responseString(queue: DispatchQueue = .main,
dataPreprocessor: DataPreprocessor = StringResponseSerializer.defaultDataPreprocessor,
encoding: String.Encoding? = nil,
emptyResponseCodes: Set<Int> = StringResponseSerializer.defaultEmptyResponseCodes,
emptyRequestMethods: Set<HTTPMethod> = StringResponseSerializer.defaultEmptyRequestMethods,
completionHandler: @escaping (AFDataResponse<String>) -> Void) -> Self
// Response Decodable Handler - Serialized into Decodable Type
func responseDecodable<T: Decodable>(of type: T.Type = T.self,
queue: DispatchQueue = .main,
dataPreprocessor: DataPreprocessor = DecodableResponseSerializer<T>.defaultDataPreprocessor,
decoder: DataDecoder = JSONDecoder(),
emptyResponseCodes: Set<Int> = DecodableResponseSerializer<T>.defaultEmptyResponseCodes,
emptyRequestMethods: Set<HTTPMethod> = DecodableResponseSerializer<T>.defaultEmptyRequestMethods,
completionHandler: @escaping (AFDataResponse<T>) -> Void) -> Self
1. response
2. response<Serializer: DataResponseSerializerProtocol>
3. responseData
4. responseString
5. responseDecodable
6. responseJSON : ํด๋น ๋ฉ์๋๋ Alamofire 6 ๋ถํฐ deprecated ๋ผ์ ๊ณต์ ๋ฌธ์์๋ ์ฌ๋ผ์ก๋๋ณด๋ค.
Serialization, Deserialization
Serialization
- ์ง๋ ฌํ
- Encoding
- ์ธ๋ถ์์ ์์๋ค์ ์ ์๋ ํํ๋ก ๋ณํ
Deserialization
- ์ญ์ง๋ ฌํ
- Decoding
- ์์คํ ์์ ์ฌ์ฉํ ์ ์๋ ํํ๋ก ๋ณํ
Pagination
swift์์ ๊ตฌํํ๊ธฐ
- will display cell ์ด์ฉ
- ์ ์ด ๊ทธ๋ ค์ง๊ธฐ ์ ์ ํธ์ถ, ์ค์ ์ ์ ๊ทธ๋ ค์ฃผ๋ ์ญํ ์ cell for row at์ด ํจ
- ์์์น ๋ชปํ ๋ฐฉ์์ผ๋ก ๋์ํ ์ ์์
- scrollView์ scroll ์์ ์ด์ฉ
- ๋ง์ด ์ฐ์ด๋ ๋ฐฉ์
- contents์ ๋์ ๋์ฐฉํ์ ๋ delegate method๋ฅผ ํธ์ถํด์ ์ ์ ํ ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ๋ฉด ๋จ
- contentSize, contentOffset ๊ฐ๋ ์ ์ดํดํด์ผ ํจ
- DataSourcePrefetching ํ๋กํ ์ฝ ์ด์ฉ
- ๊ฐ์ฅ ์ ํฉํ ๋ฐฉ์์ ๊ฐ๊น์
- ์์ ์ทจ์ ๊ธฐ๋ฅ๋ ํฌํจ (๋ง์ฝ ์ฌ์ฉ์๊ฐ ์คํฌ๋กค์ ๋๋ฌด ๋นจ๋ฆฌ ํ๋ค๋ฉด ์ค๊ฐ ์ค๊ฐ ์ทจ์๋ฅผ ํ๋ ๊ฒ์ด ํจ์จ์ ์ผ ์ ์๊ธฐ ๋๋ฌธ์ ์ ์ ํ ์ํฉ์ ์ด์ฉํ๊ธฐ)
ํด๋ก์
- ์ด๋ฆ์ด ์๋ ํจ์ = ๋ฉ์๋ ํจ์
- ์ด๋ฆ์ด ์๋ ํจ์ = ํด๋ก์ ํจ์
+ ํ๊ธฐํ ๊ฒ


'๐ฑ SeSAC' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SeSAC] 220808 TIL (0) | 2022.08.12 |
---|---|
[SeSAC] 220805 TIL (2) | 2022.08.10 |
[SeSAC] 220803 TIL (0) | 2022.08.10 |
[SeSAC] 220802 TIL (0) | 2022.08.10 |
[SeSAC] 220801 TIL (0) | 2022.08.10 |
์๋ฒ ํต์ ์ ์ ์ ๋ณด์ฌ์ค UIImage ๋ณํ ์์
urlString โถ๏ธ url โถ๏ธ image
url๋ก ๋ฐ๊พธ๊ณ ๋๋ image๋ก ๋ฐ๊พธ๋ ๊ณผ์ ์ ์ด๋์์ ์งํํ๋ ๊ฒ์ด ์ข์๊น?
- ์๋ฒ ํต์ ์์ ์์ ํ ์ง => ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฌ๊ณ , ์ฌ์ฉ์๊ฐ ๋ณด์ง ์์ ์ ์๋ ์ ๋ณด์ ๋ํด์๋ ์์ ์ ์งํํ ์ ์์ด์ ๋นํจ์จ์
- ์ ์์ ์ฒ๋ฆฌํ ์ง => ์กฐ๊ธ ๋ ์ ์ ํด๋ณด์ธ๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก ์๋ฒ ํต์ ์ ์ ์์ ํ ๊ฒฝ์ฐ ์ ์ด ๊บผ๋ด์ง ๋๋ง๋ค ์์ฒญ์ด ๋ค์ด๊ฐ call ์๊ฐ ์ฆ๊ฐํ ์ ์๋ค.
Alamofire์ ๋ฐ์ดํฐ ๋ฐ์์ค๋ ๋ฉ์๋(Response Handler)
// Response Handler - Unserialized Response
func response(queue: DispatchQueue = .main,
completionHandler: @escaping (AFDataResponse<Data?>) -> Void) -> Self
// Response Serializer Handler - Serialize using the passed Serializer
func response<Serializer: DataResponseSerializerProtocol>(queue: DispatchQueue = .main,
responseSerializer: Serializer,
completionHandler: @escaping (AFDataResponse<Serializer.SerializedObject>) -> Void) -> Self
// Response Data Handler - Serialized into Data
func responseData(queue: DispatchQueue = .main,
dataPreprocessor: DataPreprocessor = DataResponseSerializer.defaultDataPreprocessor,
emptyResponseCodes: Set<Int> = DataResponseSerializer.defaultEmptyResponseCodes,
emptyRequestMethods: Set<HTTPMethod> = DataResponseSerializer.defaultEmptyRequestMethods,
completionHandler: @escaping (AFDataResponse<Data>) -> Void) -> Self
// Response String Handler - Serialized into String
func responseString(queue: DispatchQueue = .main,
dataPreprocessor: DataPreprocessor = StringResponseSerializer.defaultDataPreprocessor,
encoding: String.Encoding? = nil,
emptyResponseCodes: Set<Int> = StringResponseSerializer.defaultEmptyResponseCodes,
emptyRequestMethods: Set<HTTPMethod> = StringResponseSerializer.defaultEmptyRequestMethods,
completionHandler: @escaping (AFDataResponse<String>) -> Void) -> Self
// Response Decodable Handler - Serialized into Decodable Type
func responseDecodable<T: Decodable>(of type: T.Type = T.self,
queue: DispatchQueue = .main,
dataPreprocessor: DataPreprocessor = DecodableResponseSerializer<T>.defaultDataPreprocessor,
decoder: DataDecoder = JSONDecoder(),
emptyResponseCodes: Set<Int> = DecodableResponseSerializer<T>.defaultEmptyResponseCodes,
emptyRequestMethods: Set<HTTPMethod> = DecodableResponseSerializer<T>.defaultEmptyRequestMethods,
completionHandler: @escaping (AFDataResponse<T>) -> Void) -> Self
1. response
2. response<Serializer: DataResponseSerializerProtocol>
3. responseData
4. responseString
5. responseDecodable
6. responseJSON : ํด๋น ๋ฉ์๋๋ Alamofire 6 ๋ถํฐ deprecated ๋ผ์ ๊ณต์ ๋ฌธ์์๋ ์ฌ๋ผ์ก๋๋ณด๋ค.
Serialization, Deserialization
Serialization
- ์ง๋ ฌํ
- Encoding
- ์ธ๋ถ์์ ์์๋ค์ ์ ์๋ ํํ๋ก ๋ณํ
Deserialization
- ์ญ์ง๋ ฌํ
- Decoding
- ์์คํ ์์ ์ฌ์ฉํ ์ ์๋ ํํ๋ก ๋ณํ
Pagination
swift์์ ๊ตฌํํ๊ธฐ
- will display cell ์ด์ฉ
- ์ ์ด ๊ทธ๋ ค์ง๊ธฐ ์ ์ ํธ์ถ, ์ค์ ์ ์ ๊ทธ๋ ค์ฃผ๋ ์ญํ ์ cell for row at์ด ํจ
- ์์์น ๋ชปํ ๋ฐฉ์์ผ๋ก ๋์ํ ์ ์์
- scrollView์ scroll ์์ ์ด์ฉ
- ๋ง์ด ์ฐ์ด๋ ๋ฐฉ์
- contents์ ๋์ ๋์ฐฉํ์ ๋ delegate method๋ฅผ ํธ์ถํด์ ์ ์ ํ ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ๋ฉด ๋จ
- contentSize, contentOffset ๊ฐ๋ ์ ์ดํดํด์ผ ํจ
- DataSourcePrefetching ํ๋กํ ์ฝ ์ด์ฉ
- ๊ฐ์ฅ ์ ํฉํ ๋ฐฉ์์ ๊ฐ๊น์
- ์์ ์ทจ์ ๊ธฐ๋ฅ๋ ํฌํจ (๋ง์ฝ ์ฌ์ฉ์๊ฐ ์คํฌ๋กค์ ๋๋ฌด ๋นจ๋ฆฌ ํ๋ค๋ฉด ์ค๊ฐ ์ค๊ฐ ์ทจ์๋ฅผ ํ๋ ๊ฒ์ด ํจ์จ์ ์ผ ์ ์๊ธฐ ๋๋ฌธ์ ์ ์ ํ ์ํฉ์ ์ด์ฉํ๊ธฐ)
ํด๋ก์
- ์ด๋ฆ์ด ์๋ ํจ์ = ๋ฉ์๋ ํจ์
- ์ด๋ฆ์ด ์๋ ํจ์ = ํด๋ก์ ํจ์
+ ํ๊ธฐํ ๊ฒ


'๐ฑ SeSAC' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SeSAC] 220808 TIL (0) | 2022.08.12 |
---|---|
[SeSAC] 220805 TIL (2) | 2022.08.10 |
[SeSAC] 220803 TIL (0) | 2022.08.10 |
[SeSAC] 220802 TIL (0) | 2022.08.10 |
[SeSAC] 220801 TIL (0) | 2022.08.10 |