본문 바로가기

iOS 개발28

[iOS/UIKit] UIKit 개발 방법들 (Storyboard, NIBs, Programmatic) Storyboard 간단한 프로젝트에 대해서 빠르고 직관적으로 작성할 수 있지만 큰 스케일의 프로젝트에는 부적합하다. 여러 개발자가 작업할 때 Merge Conflict 다루기 힘들기 때문이다. 또한, 하나의 View Controller 만 쏙 빼내서 재활용하기 힘들다. 의존성 관계의 View Controller 들과 모두 함께 움직여야 한다. NIBs(XIBs) 단일 View 를 빠르게 작성하고 필요에 따라 View Controller 에 붙인다. 즉, 단일 View 에 대해 재사용이 용이하다. Lazy Loading 방식으로 작동하므로 Memory Efficiency 는 좋지만, 이에 따른 Performance Latency 가 있을 수도 있다. Programmatic UI Storyboard, NI.. 2021. 9. 5.
[iOS] Stanford iOS Lecture - MVVM (cs193p) MVVM Architecture MVVM 의 핵심은 View (user-interface code) 와 Model (backend or logic) 의 분리이다. 이를 위해 Model 의 모든 변화를 View 가 파악하고 UI 를 Rebuild 할 수 있어야 한다. Model Model 은 UI 와 독립적이다. (Model 파일에는 "import SwiftUI" 구문이 없다.) Model 은 앱이 '무엇인지, 무엇을 할지' 설명하는 모든 Data & Logic 을 담고 있다. Model 은 앱의 Source of truth 로서 Model 의 데이터 혹은 정보를 UI 코드에 저장하거나 하는 일은 없다. View View 는 앱을 사용자에게 '어떻게 보여 줄지' 에 대한 것이다. View 는 Model 로.. 2021. 8. 31.
[iOS] 모의 URLSession 으로 네트워킹 Test 하기 목차 (눌러서 이동) 모의 URLSession 이 필요한 이유 Network 연결이 필요한 작업을 테스트할 때 항상 실제 network 를 통해 해당 URL 에 접근한다면 너무 많은 시간이 소요된다. 따라서, 실제 network 연결 없이 네트워킹 함수를 테스트 할 수 있어야 한다. URL download 함수 func downloadData(_ session: URLSession, completionBlock: @escaping (Result) -> Void) { if let url = URL(string: /*Put URL that you want to downlaod some data.*/) { let task = session.dataTask(with: url, completionHandler: .. 2021. 7. 30.
[iOS] TDD(Test Driven Development) Tutorial raywenderlich - Test Driven Development Tutorial for iOS 목차 (눌러서 이동) TDD 의 장점 Test code 는 Production code 의 작성과 함께 계속 수정되므로 개발 내용을 계속해서 따라간다. 그래서 작성한 Test 자체가 앱의 동작 방식에 대해 기술한 개발 문서가 된다. TDD 방식으로 개발할 때 Test code 의 Code coverage 가 당연히 더 좋고, 추후에 중대한 update 를 하게 될 경우 훨씬 쉽다. 한 명이 Test code 를 작성, 다른 한 명이 Production code 를 작성하며 Pair-programming 을 적용하기 쉽고, 이로 인해 개발 속도는 빠르지만 튼튼한 앱을 만들게 된다. Red - Green -.. 2021. 7. 16.
[iOS] WWDC 2019 Testing in Xcode WWDC2019 Testing in Xcode Introduction to XCTest Test Pyramid 피라미드 형태의 Test plan 을 통해 효율적이고 철저하게 검사하면서도 속도를 놓치지 않도록 균형을 잡을 수 있다. Unit test 는 Test 의 기본 단위이다. 단일한 코드 조각 (보통은 function) 에 대해 특정 입력을 넣고 기대하는 출력이 나오는지 확인한다. Unit test 짧고 단순하며 빠르다. 또한, 모든 Test 의 기반이 되므로 최대한 대부분의 functions 이 Test 될 수 있도록 하는 것이 좋다. Integration test 는 좀 더 넓은 범위에 적용된다. 앱의 여러 부분들 혹은 class 들이 모여 서로 올바르게 상호작용하고 동작하는지 확인한다. Unit.. 2021. 7. 12.
[iOS] Unit & UI Testing raywenderlich - iOS Unit Testing and UI Testing Tutorial 테스트는 앱이 거대하고 복잡해짐에 따라 버그를 숨기지 않고 안전하게 확장되도록 하는 중요한 장치이다. 이번 튜토리얼을 통해 다음 사항들을 테스트 해본다. 1. 앱의 Model 즉, 중심이 되는 논리나 기능. 2. Asynchronous methods (비동기적으로 진행되는 작업). 3. 라이브러리나 시스템 객체와의 상호작용을 가짜로 흉내내서 테스트하기 (Stubs and mocks). 4. UI Test. 5. Performance Test. 6. Code coverage tool (테스트를 거치는 실제 코드들을 확인하기). 어떤 것을 테스트할지 파악하기 테스트가 무엇을 위해, 그에 따라 어떤 부분에 필.. 2021. 7. 10.