본문 바로가기

iOS Continuous CI / CD 구축해보자! - XCConfig 이 포스팅은 "iOS Continuous CI / CD 구축해보자!"의 Series 중 일부입니다. 1. iOS Continuous CI / CD 구축해보자! - Overview 2. iOS Continuous CI / CD 구축해보자! - XCConfig 3. iOS Continuous CI / CD 구축해보자! - Travis CI (준비중) 4. iOS Continuous CI / CD 구축해보자! - Fastlane (준비중) 5. iOS Continuous CI / CD 구축해보자! - Codecov (준비중) XCConfig를 사용해야 하는 이유? 여러 유형의 빌드 타입들을 어떻게 효율적으로 관리할 수 있을까요? 기본적으로 빌드 타입은 Debug, Release 로 구분되어 있지만 2가지 빌.. 더보기
[WWDC 2019] iOS 시뮬레이터 최대한 활용하기! - xcrun simctl (2/2) WWDC 2019 Getting the Most Out of Simulator 를 정리한 포스트입니다. 더 자세한 내용을 원하시면 위 링크를 참조하시길 바랍니다. iOS 시뮬레이터 최대한 활용하기! - Simulator (1/2) iOS 시뮬레이터 최대한 활용하기! - xcrun simctl (2/2) 도움말 xcrun simctl help xcrun simctl help ...더보기 usage: simctl [--set ] [--profiles ] ... simctl help [subcommand] Command line utility to control the Simulator For subcommands that require a argument, you may specify a device UDI.. 더보기
[WWDC 2019] iOS 시뮬레이터 최대한 활용하기! - Simulator (1/2) WWDC 2019 Getting the Most Out of Simulator 를 정리한 포스트입니다. 더 자세한 내용을 원하시면 위 링크를 참조하시길 바랍니다. iOS 시뮬레이터 최대한 활용하기! - Simulator (1/2) iOS 시뮬레이터 최대한 활용하기! - xcrun simctl (2/2) What Is Simulator? Kernel: 하드웨어 리소스를 관리, 메모리를 할당, 프로세스 사이에서 중재합니다. MacOS User space launchd: PID 1 cfprefsd, distnoted: Deamon AppKit, Foundation: Framework Application iOS Simulator User space Mac User space 와 분리되어 있으며 각각의 Simu.. 더보기
[WWDC 2018] Measuring Performance Using Logging WWDC 2018 Measuring Performance Using Logging 를 정리한 포스트입니다. 더 자세한 내용을 원하시면 위 링크를 참조하시길 바랍니다. Introducing Signposts Logging let logHandle = OSLog(subsystem: "com.example.widget", category: "Setup") os_log(.info, log: logHandle, "Hello, %{public}s!", world) Signposts WWDC 2016에 새로운 로깅 시스템이 도입되었습니다 효율성과 프라이버시를 염두에 두고 디버깅 할 수 있도록 구축합니다. 성능 활용 사례 및 개발자 도구와의 통합을 위해 구축합니다. Logging Apple Document Measur.. 더보기
[WWDC 2019] Optimizing App Launch WWDC 2019 Optimizing App Launch 를 정리한 포스트입니다. 더 자세한 내용을 원하시면 위 링크를 참조하시길 바랍니다. What is launch Launch Type Cold Launch 재부팅 후 (After reboot) 앱이 메모리에 없음 (App is not in memory) 앱 Process 가 없음 (No process exists) 앱을 시작할려면 디스크에서 메모리로 가져와야 하고 앱을 지원하는 시스템 쪽 서비스를 시작한 다음 프로세스를 실행해야 한다. Warm Launch 최근에 종료됨 (Recently terminated) 앱이 부분적으로 메모리에 존재 (App is partially in memory) 앱 Process 가 없음 (No process exists.. 더보기
Drawing Performance 를 이해하자! High performance drawing on iOS의 내용을 정리한 포스트입니다. Drawing 의 Performance 는 4가지 요소가 있습니다. 1. Low performance CPU-based drawing 2. High performance CPU-based drawing 3. Sublayer GPU-based drawing 4. Draw(layer:ctx:) GPU-based Low performance CPU-based drawing let renderer = UIGraphicsImageRenderer(size: bounds.size) image = renderer.image { ctx in image?.draw(in: bounds) lineColor.setStroke() // any.. 더보기
[WWDC 2018] LLDB 코드 수정 없이 Debugging 해보자! 2018’s WWDC was Advanced Debugging with Xcode and LLDB 를 기반으로 한 Xcode and LLDB Advanced Debugging Tutorial Part(1,2,3) 포스트를 정리한 내용입니다. 시작하기 앞서 Demo Project 환경을 설정합니다. 1. 처음 앱을 시작하면 TableView 에 post 가 보여집니다. 2. TableView Footer 에 Load More Indicator 가 표시됩니다. 3. TableView 하단에 스크롤이 도달하면 다음 페이지를 표시합니다. 4. 풀 다운으로 Post 를 새로고침할 수 있습니다. 5. "Page 0", "100 Posts" 로 현재 페이지 상태를 표시합니다. 버그들! 🥺 1. 풀 다운으로 새로고침을.. 더보기
코드스피츠 1강 오브젝트 1회차 (2) 책 오브젝트를 기반으로 하는 코드스피츠 강의 오브젝트 - 1회차 (2) 를 정리한 내용입니다. 1.코드스피츠 1강 오브젝트 1회차 (1) 2.코드스피츠 1강 오브젝트 1회차 (2) 3.코드스피츠 1강 오브젝트 2회차 4.코드스피츠 1강 오브젝트 3회차 5. 코드스피츠 1강 오브젝트 4회차 6. 코드스피츠 1강 오브젝트 5회차 7. 코드스피츠 1강 오브젝트 6회차 들어가기 앞서 오브젝트에서 말하는 책임과 SRP 의 책임은 다릅니다. 여기에서 먼저 확인해 주세요! Value & Identifier 특정 유형의 데이터를 값으로 볼것인가? 객체로 볼것인가? 필드 값으로 객체의 동등성을 평가한다면 더이상 객체가 아니다. 객체는 식별자를 통해서만 객체의 고유성을 평가해야만 한다. 협력자 객체를 받아왔다면 이 객체가.. 더보기