본문 바로가기

async/await

(3)
[Swift] Petpion - 과연 Swift Concurrency를 제대로 활용하고 있는가? 안녕하세요! 제 두 번째 개인 프로젝트 Petpion이 2023년 5월 27일 앱스토어에 출시가 되었습니다. Petpion은 제가 1부터 100까지 혼자 힘으로 개발한 앱입니다. 그래서 더욱 다양한 새로운 기술들을 시도해 본 앱 이기도 한데 그중 오늘은 Concurrency에 대하여 다루어 보려 합니다. WWDC 2015 - Building Responsive and Efficient Apps with GCD WWDC 2016 - Concurrent Programming With GCD in Swift 3 WWDC 2017 - Modernizing Grand Central Dispatch Usage WWDC 2022 - Eliminate data races using Swift Concurrency 20..
Swift Concurrency - Perform asynchronous operation 위 글은 Swift Concurrency 공식문서를 참고했습니다. Concurrency에 대해서 알아보기에 앞서 우린 동시성을 가진 코드를 작성하고 있었다. 예를 들면 사진 이름 리스트를 다운로드하고, 첫 번째 사진을 다운로드하고 유저에게 보여주는 코드라면 listPhotos(inGallery: "Summer Vacation") { photoNames in let sortedNames = photoNames.sorted() let name = sortedNames[0] downloadPhoto(named: name) { photo in show(photo) } } completion handler를 통해서 위와 같은 코드를 작성했을 것이다. 그렇다면 새로운 방식의 Asynchronous 함수를 호출하는 ..
[Swift] 개인프로젝트 회고 - 서버(Firebase) 를 아껴쓰기위한 노력 문제점: 처음 앱을 실행할때 피드를 불러오는중 얼마 지나지 않아 Firebase의 Storage가 동이나버림 해결을 위하여 문제점을 고안해 보았다. 첫번째, 각 피드에 보여지는 이미지는 썸네일이미지 하나이지만 서버에서 불러오는 이미지는 썸네일 이미지 를 포함한 피드에 저장된 모든 이미지들을 모두 긁어오고있다. 두번째, 사진속 피드의 이미지들은 현재 인기탭, 최신탭을 왔다갔다 할 때마다 중복된 피드들의 이미지를 서버에서 중복으로 불러오고 있다. 세번째, 당연히도 아직 이미지를 캐싱하지 않고있다. 내가 생각했던 문제점들은 이정도가 있었다. 첫번째는 현재의 로직을 리팩터링해야하고, 세번째는 새로운 기능을 추가해야되므로 첫번째 문제부터 해결하는 것이 더 효율적일것 같았다. 두번째 문제는 이미지 캐싱을 통하여 해..