개인프로젝트 앱 "포항맛집"은 맛집을 보여주는 앱으로 database는 Notion DB를 사용한다. 아래 그림처럼 우리가 일반적으로 사용하는 Notion의 테이블을 사용하는 것이다. Notion API를 사용해서 Database 정보를 쿼리하면 이미지 파일의 경우 r
요청할 때 마다 다르게 오는 이미지 URL Notion DB에서 이미지 URL을 가져올 때마다 그 URL을 프린트해보았다. 놀라운 것은 URL이 달랐던 것이다. 그래서 매번 다른 key로 캐싱키가 설정되니, 요청할 때마다 데이터 로딩이 발생하는 것이다. AWS에
지난번 KingFisher 내부 구조 분석에 이어서 캐싱처리 로직을 분석해보고자한다.URL을 이용해 Source타입을 만드는 함수를 살펴보자.overrideCacheKey가 없다면 내부 cacheKey를 사용하도록 하고 있다.그런데 ImageResource는 만약 캐싱
앱 라이프 사이클이란 앱을 시작하고 앱이 종료되기 전까지 앱이라는 프로세스가 가질 수 있는 여러 상태들을 뜻한다.어플리케이션 하나를 눌러서 시작했다고 생각해보자. 우리는 그 앱에서 필요한 것만 수행하고 바로 종료하는 것이 아니라, 앱을 사용하다가 카톡이 오면 백그라운
순환참조 두 객체가 각각 서로를 강한참조하고 있기 때문에 서로에 대한 참조가 해제되지 않아 메모리 누수가 발생하는 현상을 뜻한다. 말로만 하면 어떤 상황에서 발생할지 모른다. 바로 코드를 보자! Men과 Women 클래스는 각각 여친과 남친을 옵셔널 타입으로 가지
앱에서 특정 기능을 수행할 때, 그러니까 http 통신을 요청한다던가, 뷰를 업데이트 시킨다던가 하는 그런 것들의 최소 작업 단위는 Threa이다. Thread가 처리하는 작업을 태스크라고 부르며 Thread는 한번에 하나의 태스크를 처리한다.Thread를 검색하면 나
아래는 UIView의 정의이다."화면에 나타나는 직사각형에 대한 content를 관리하는 객체"정의대로 UIView를 만들면 직사각형이 화면에 나타난다. 하지만 이렇게 만들어지는 직사각형은 사실 UIView가 만드는게 아니라 CALayer라는 클래스에 의해서 만들어진다
URLSession.DataTaskPublisher라는 Combine publisher을 제공하고 있다.훨씬 코드 가독성이 증가하였다
App에서 event란 터치와 같은 사용자의 인풋을 뜻한다. 예를 들면 네비게이션 버튼을 탭했을 때, 터치 자체가 이벤트가 되는 것이다.이런 event 어떻게 수신하고 처리하는지에 대해 알아보자프로그래밍 시 책임을 분리해서 작성하는 것이 기본이듯이, 이벤트 처리와 관련