목록전체 글 (88)
iOS 개발일지

iOS 앱 개발자 데뷔 과정 46회차 #1. Checklist - Localization - i18n : Internationalization (국제화) , 주로 문화에 대한 대응 - l10n : Localization (현지화) , 주로 언어에 대한 대응 국제화/현지화는 하드웨어, 소프트웨어 등의 제품을 언어와 문화권이 다른 환경에서 사용할 수 있도록 지원하는 서비스이다. 이를 지원할 경우, 일반적으로 사용자가 선택한 기기의 기본 언어에 따라 국제화/현지화가 이루어진다. 추가 기능 구현을 통해, iOS 13 이상부터는 사용자 기기의 기본 언어와 상관 없이 앱에서 사용할 언어를 선택할 수 있다. 시간대, 숫자, 화폐 단위의 표현 차이, 선호하는 레이아웃, 선호하는 프로모션 등에서 차이가 발생할 수 있기 ..

iOS 앱 개발자 데뷔 과정 45회차 #1. Checklist - ARC (Automatic Reference Count) 메모리 영역 중 Heap은 클래스의 인스턴스, 클로저 등을 저장한다. Heap에 저장되는 메모리는 직접 할당하고 해제할 수 있다. ARC는 메모리 메모리를 추적하고 관리하는 시스템으로, 필요하지 않은 인스턴스가 있다면 자동으로 메모리에서 해제한다. ARC는 인스턴스를 참조하는 횟수만큼 RC (Reference Count) 를 증가시키고, 인스턴스가 해제될 때 RC를 감소시킨다. 더 이상 인스턴스를 참조하고 있는 변수, 상수 등이 없는 경우 ARC는 해당 인스턴스가 필요 없다고 판단하고 자동으로 메모리에서 해제한다. 대부분의 경우에 대해서는 ARC가 메모리를 알아서 관리해주지만, 인스..
iOS 앱 개발자 데뷔 과정 9주차 마무리 - 2차 평가과제 - Memo App 코드에 대한 자세한 설명보다는 진행하며 새로 사용해 본 메서드, 프로퍼티, 핵심 기능 위주로 작성 - 등록일이 일주일 이내일 때 요일로 표기 private func regdateFormat(regdate: Date) -> String { let formatter = DateFormatter() formatter.dateFormat = "yyyy.MM.dd" // 초 단위로 비교하지 않도록 포맷 let startDate = formatter.date(from: formatter.string(from: regdate)) ?? Date() let endDate = formatter.date(from: formatter.string..

iOS 앱 개발자 데뷔 과정 44회차 #1. Concurrency - Concurrency - Serial / Concurrent 여러 작업에 대해, 앞 작업과 뒷 작업을 순차적으로 실행할까? Serial : 직렬 큐 // 해당 Queue에 등록된 여러 작업을 순차적으로 실행 (= main) Concurrent: 동시 큐 // 해당 Queue에 등록된 여러 작업을 동시에 수행 (= global) - Async / Sync 단일 작업에 대해, 요청 후 결과를 기다릴까? Sync : 동기 // 실행중인 작업이 끝나기 전까지 다음 작업을 실행하지 않고, 끝나면 다음 코드를 실행 -> 기다릴게! Async : 비동기 // 실행중인 작업이 끝나기 전에 다른 작업을 동시에 수행하여, 작업 속도가 상승 -> 안기다려..

iOS 앱 개발자 데뷔 과정 43회차 #0. Memo - Observable MVVM 패턴에서 사용되는 Observable에 대해 간단하게 이해해보자. 42회에서도 거의 동일한 코드를 작성했었지만, 이해를 위해 다시 한번 단계를 거쳐 코드를 수정했다. 왼쪽 코드도 제네릭을 사용하지 않는다는 점을 제외하면 목적에 부합하는 코드이다. 어떤 타입이 들어오더라도 대응할 수 있도록 개선하면 오른쪽 코드가 된다. 아래의 사용 예시를 같이 보며 코드의 흐름을 따라가면 이렇게 된다. 1. 상수 example을 User의 인스턴스로 초기화한다. 2. 값이 바뀔 때마다 실행하고자 하는 클로저를 example의 bind로 전달한다. 이 때, 바뀐 값을 클로저 내부에서 사용할 수 있도록 T를 매개변수로 받는다. 3. 클로저를..

iOS 앱 개발자 데뷔 과정 42회차 #1. Checklist - MVC Model-View-Controller 로 앱의 한 화면, 즉 앱의 한 부분을 제어하기 위해서 MVC 패턴 하나가 사용된다. 실제로 앱은 여러 MVC 패턴으로 이루어져 있어, 여러 MVC가 서로 관계를 갖는 형태가 된다. - Controller : 아웃렛 변수나 인스턴스 변수를 통해 View에 항상 접근이 가능하며, Model에 대한 모든 것을 알고있다. - Model : 화면과는 상관없이 UI와 독립적인 구조로 이루어져있고, 모든 의사소통은 Controller를 통해 전달된다. 값이 변경되는 데이터를 Model이 가지고 있는 경우에는 Notification, KVO 등을 통해 Controller에게 알린다.- - View : 애플..
iOS 앱 개발자 데뷔 과정 41회차 #1. Checklist - URLSession https://developer.apple.com/documentation/foundation/urlsession 참고 데이터를 다운로드 하거나 업로드 하는 등의 API를 제공해주는 클래스로 URL이 가리키는 엔드포인트를 가지고 있다. URLSessionAPI를 통해 데이터를 어떻게 전송하고 어떻게 동작할지 등의 정책을 설정할 수 있다. ex. 타임아웃, 캐시 정책, 백그라운드 데이터 전송 등 - SharedSession 간단하고 기본적인 요청의 경우, 동작과 전송에 대한 정책이 기본적으로 설정되어 있는 Shared Session을 사용할 수 있다. 네트워크 응답에 대해서는 Completion Handler를 통해 전달..

iOS 앱 개발자 데뷔 과정 40회차 #1. Checklist - Codable (Encodable & Decodable) JSON과 같은 외부 표현과의 호환성을 위해 데이터 유형을 인코딩 및 디코딩할 수 있는 프로토콜이다. JSON 뿐만 아니라 디스크에 데이터 저장, 네트워크 연결 등을 통한 API 통신 등의 작업에서는 데이터가 전송되는 동안 중간 형식 (intermediate format) 으로 데이터를 인코딩 및 디코딩해야 하는 경우가 많은데, Swift 표준 라이브러리에서는 Codable을 통해 데이터 인코딩 및 디코딩에 대한 표준화된 접근 방식을 제공하고 있다. JSON ➡️ Struct 데이터 변환에 디코딩을 사용하고, Struct ➡️ JSON 데이터 변환에 인코딩을 사용한다. Seriali..