
국제화/현지화 사용자가 선택한 기기의 언어대로 나옴. 하지만 기기의 언어와 상관없이 앱에서 사용할 언어를 정할 수도 있음. 다국어를 지원하는 경우, 언어뿐만 아니라 날짜 포맷이나 표시 단위 같은 것들을 신경써야함. i18n(Internationalization) -> 특정 국가나 지역에 종속되지 않게 설계. 언어뿐아니라 RTL이나 날짜 표기 방법 등을 고려해 설계 ex) 국가에 따라 시간대나 날짜가 달라지는데, 이런 변화를 감지하고 처리하는 것 l10n(Localization) -> 번역 및 리소스 작업 등을 적합하게 구현해서 설계. ex) 각 나라별로 날짜 표기 방법이 다르므로 이를 그나라에 맞는 형식으로 표현하는 것. 1. 인터페이스 빌더 기반 우선, 프로젝트 설정의 info에서 Localizatio..

오늘은 평가 과제를 진행하면서 새롭게 알게된 것들을 적어보겠음. @available(*, unavailable) BaseView와 같이 커스텀 베이스 클래스를 사용하여 코드로 구현할 때, required init이 필수로 작성되어야 함. 하지만 쓰지 않는 코드이므로 매번 상속받은 클래스에서 작성할 이유가 없음. 그럴때에 @available(*, unavailable)을 이용하면 됨. *는 모든 버전을 의미하고, unavailable은 막는 의미이므로 모든 경우에서 required init이 작성될 필요가 없어짐. 코드베이스로 구현할 때, 스토리보드 삭제 코드로 구현하면서 항상 남아있는 스토리보드가 거슬렸음. 근데 이 스토리보드만 지우면 오류가 발생함. 두 가지를 추가적으로 삭제해줘야함. 1. TARGET..

Concurrency Programming을 하기 위해서 몇 가지의 방법이 있음. 1. GCD 2. OperationQueue -> GCD로 작업을 일시중단하거나 재개하는데에서 한계가 있었기에 생김 3. Async/Await 오늘은 GCD에 대해서 알아보았음. -> 나중에 따로 정리를 해야됨 GCD(Grand Central Dispatch) DispatchQueue에는 네 가지의 케이스가 있음. (디스패치는 보내는 것을 의미하므로 큐에 보내는 방식이라고 생각하면 될듯) 1. Serial / Sync Serial은 메인 스레드를 의미함. 위의 코드를 설명하자면 메인스레드가 101...200까지 프린트하는 작업을 메인스레드에 넘기는 것임. 근데 메인스레드는 넘긴 작업이 끝날때까지 기다려야함. -> sync이..

MVC와 MVVM은 상위호환적인 개념이 아님. MVC Model - View - Controller로 이루어진 아키텍쳐 앱의 한 부분을 제어하기 위해 MVC패턴 하나가 사용되는 것 -> Scene이 여러 개가 있고 각각을 담당하는 뷰컨트롤러와 모델이 있다면 MVC패턴도 뷰컨트롤러 수만큼 있는 것. Model -> 화면과 상관 없이, 본질적인 데이터만 담당 -> 네트워킹을 통해 데이터를 받아올때 만들어줬던 구조체같은거 생각하면 될 듯. -> 모든 의사소통은 컨트롤러를 통해 전달 -> 뷰와 연관되어 있지 않음. Controller -> Model이 화면에 어떻게 표시될지 정해주는 역할. 보통 UI로직이 들어감. -> 항상 접근이 가능하고 Model에 대한 모든 것을 알고있음. View -> Label, Bu..

Codable Decodable과 Encodable을 함께 묶어서 typealias를 이용해 선언한 프로토콜. 데이터가 전송되는 동안 intermediate format으로 데이터를 인코딩&디코딩해야 할 때 사용. Codable이 등장하기 전엔 JSONSerialization이 사용됐음. -> JSON Value중 단일한 값만 가져오는 것이라면 JSONSerialization이 더 빠르지만, 그 외에는 Codable이 더 빠름. SwiftyJson라이브러리는 JSONSerialization을 기반으로 만들어져있고, 속도가 가장 오래걸림 -> 하지만 딕셔너리 형태로 가져온다는 장점이 있음. Decodable 원하는 모델로 데이터를 디코딩할 수 있는 프로토콜 구조체, 클래스, 열거형 모두에서 사용 가능. 모..
- Total
- Today
- Yesterday