본문 바로가기

swift

(44)
Unit Test Unit Test Detect logic failures, UI problems, and performance regressions with XCTest. → XCTest를 사용하여 논리 오류, UI 문제 및 성능 회귀를 감지 모든 함수와 메소드에 대한 테스트 케이스(Test case)를 작성하는 절차 목표 : 프로그램의 각 부분을 고립 시켜서 각각의 부분이 정확하게 동작하는지 확인하는 것 Unit Test 장점 다양한 수준의 추상화에서 테스트를 작성하는 기능을 용이하게 한다. → 테스트를 한다는 것은 안정성을 보장하는 것, 디버깅 시간을 줄일 수 있다 →효율적이다, 유지 보수에 유리해지고, 스펙을 문서화할 수도 있고, 더 깔끔한 코드를 작성할 수 있다 테스트 케이스는 서로 분리되어야 하기 때문에 가짜 ..
재사용이란? 아키텍처 공부를 하다보니 문득 재사용에대한 궁금증이 들었다 재사용은 무엇이며, 왜 중요한 것이며, 어떻게 고려해야하는 것인가? 코드 재사용 소프트웨어 재사용 기존의 소프트웨어 또는 소프트웨어 지식을 활용해 새로운 소프트웨어를 구축 단순 코드의 재사용 : 템플릿, 함수와 같은 코드의 일부를 재사용 재사용가능한 자산을 재활용 : 자산에는 설계, 요구명세, test, 아키텍쳐 등이 포함됨 → 그렇다면 과연 지나친 추상화로 가독성이 떨어지게 되는 경우 과연 재사용을 위한 추상화가 의미가 있는 것인가?라는 의문이 듦 재사용을 함으로 작업 시간, 에너지, 비용 절약 재활용을 쉽게하는 특성 : 모듈성, 저결합도, 고응집도, 캡슐화, 관심의 분리 → 최소의 역할로 작게 분리하는 느낌 라이브러리 : 프로그램 일부를 재사..
Swift Concurrency II 비동기 함수를 병렬로 호출 await를 사용하여 비동기 함수를 호출하면 한 번에 하나의 코드만 실행 let firstPhoto = await downloadPhoto(named: photoNames[0]) let secondPhoto = await downloadPhoto(named: photoNames[1]) let thirdPhoto = await downloadPhoto(named: photoNames[2]) let photos = [firstPhoto, secondPhoto, thirdPhoto] show(photos) → 이런 경우 downloadPhoto가 비동기 작업이어도 프로퍼티에 값을 넣는 동기 작업이 따르기 때문에 동기적으로 작업이 처리됨 async let firstPhoto = dow..
Swift Concurrency I Coroutine 서브 루틴을 일시 정지하고 재개할 수 있는 프로그래밍 참고하기 좋은 블로그 - Swift Async-Awiat과 Kotlin Coroutine 비교 Swift Concurrency 병렬 프로그래밍과 비동기 코드를 사용하는 프로그램은 한번에 여러 작업을 수행할 수 있음 Swift안에서 Concurrency 모델은 스레드에서 구축하지만 스레드와 직접 상호 작용하지는 않음 → 비동기 함수가 Blocking이 되면 시스템에 맡김 → 비동기 함수가 다시 resume되면 해당 함수가 어느 스레드에서 실행될지는 보장되지 않음 → 비동기 함수가 Blocking 시 실행 중이던 스레드를 포기할 수 있게 되고, 해당 스레드는 다른 비동기 함수를 실행할 수 있음 이 개념은 코루틴(Coroutine) 에서 ..
User Notifications User Notifications 서버에서 사용자 기기로 알람을 푸시하거나 앱의 로컬에서 알람을 표시→ 원격 알림의 경우 : 서버에서 푸시 알림을 생성하여 APNs(Apple 푸시 알림 서비스)가 사용자의 기기로 알림 전달 → 로컬 알림의 경우 : 알림 컨텐츠를 생성하고 이를 전달하는 트리거 조건을 지정 알림은 경고를 표시하거나, 소리를 재생하거나, 앱 아이콘에 배지를 지정할 수 있음 사용자 기기에서 앱의 실행 여부와 관계없이 사용자에게 중요한 정보를 전달 Focus를 사용하여 사용자가 알림으로부터 방해를 받지 않게 지정할 수 있음→ Focus가 알림 전달을 지연시킬 수 있지만 알림 자체는 즉시 사용 가능 → 집중 모드, 지정시간 알림 설정(Notification Summary) 시 알람을 필터링 가능함..
Dependency Injection Dependency Injection 의존성 주입 종류 생성자 주입 프로퍼티 주입 메소드 주입 Initializer Injection Immutable하게 주입가능 init시 주입받게되면 파라미터에 들어온 내용은 보장이 가능함 Property Injection 이미 인스턴스화가 된 클래스나 struct에 프로퍼티로 접근하여 주입이 가능함 하지만 이때 변수는 public하게 접근가능하기 때문에 변동가능성이 있음 init의 파라미터로 주입이 불가능한 경우(ex. 스토리보드를 사용하는 경우) 유일한 방법이 되기도 함 Method Injection 메서드의 파라미터를 통해 주입 언제든 주입이 가능함 객체가 의존성에 대한 컨트롤를 잃을 수 있다는 단점이 존재하지만, 유연하게 사용가능하다는 장점이 존재 참고링크 h..
String Localization 📒 Localization TRANSLATE with x English Arabic Hebrew Polish Bulgarian Hindi Portuguese Catalan Hmong Daw Romanian Chinese Simplified Hungarian Russian Chinese Traditional Indonesian Slovak Czech Italian Slovenian Danish Japanese Spanish Dutch Klingon Swedish English Korean Thai Estonian Latvian Turkish Finnish Lithuanian Ukrainian French Malay Urdu German Maltese Vietnamese Greek Norwegian Wels..
Localization Localization - L10N(Localization / L과 N사이 10글자) - 국제화를 하기 위해선 지역화를 해야함 - 시장에 맞춘 지역화(현지화)의 필요성 대두 Internationalization - I18N(Internationalization / I와 N사이 18글자) - Apple 사용자의 70% 이상이 미국외 지역으로 추정 - Apple은 앱스토어를 통해 국제화를 하고자 함 - 브랜드는 국제적으로! 판매상품은 지역적으로! - 국제화는 애플의 역할, 지역화는 개발자의 영역임 국제화 및 지역화를 위한 코드를 작성 시 고려해야할 사항들 User Facing Text : string Formatter를 사용하여 텍스트 지역화 날짜, 통화, 숫자 : Date Formatter, Number ..

728x90