본문 바로가기

iOS

[WWDC 2018] iOS Memory Deep Dive (1/2) WWDC 2018 iOS Memory Deep Dive 를 정리한 포스트입니다. 더 자세한 내용을 원하시면 위 링크를 참조하시길 바랍니다. Virtual Memory? Device마다 RAM의 크기는 다르며, 서로 다른 RAM 시스템을 통일된 Adress 시스템으로 추상화하는 기술을 Virtual Memory라고 합니다. Virtual Memory 주소가 "Virtual"의 의미는 물리적 주소가 정렬할 필요가 없다는 것을 의미합니다. 앱의 모든 프로세스는 가상 메모리 공간을 확보하고 해당 공간의 모든 주소에 액세스 할 수 있습니다. 모든 가상 메모리 공간에는 동일한 주소 목록이 있다는 점을 고려해야 합니다. 한 프로세스에서 동일한 주소는 다른 프로세스에서 다른 물리적 주소이므로 다른 프로세스의 메모리 블.. 더보기
IPA 추출 방법 (<= iOS 9) iOS 9.0 이상부터 IPA 추출 방법을 소개합니다. Apple Configurator 2 를 Mac에 설치 다운로드를 받은 후 Mac에 설치합니다. 1. Apple Configurator 2 > Device 선택 > 추가 > 앱 2. 앱 선택 > 추가 3. 1,2 번 항목을 진행하면 아래와 같이 진행 화면이 표시됩니다. 4. 아래 경로에 ipa 가 생성되야 하지만 지금은 생성이 되지않았군요. ~/$HOME/Library/Group Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps 5. 1,2,3 과정을 다시 한번 진행합니다. 6. 충돌이 발생하면서 Temp 영역에 IPA 를 .. 더보기
Understanding and Analyzing Application Crash Reports (2/2) Understanding and Analyzing Application Crash Reports (1/2) Understanding and Analyzing Application Crash Reports (2/2) Symbolicating iOS Crash Reports With Xcode Symbolicating Crash Reports With atos Determining Whether a Crash Report is Symbolicated Exceptions Binary Images Thread State 위에 내용은 건너뛰었습니다. 전체 내용을 확인하실려면 여기에서 확인해 주세요. Analyzing Crash Reports Header 모든 충돌 보고서는 헤더로 시작합니다. Incident Id.. 더보기
Understanding and Analyzing Application Crash Reports (1/2) Understanding and Analyzing Application Crash Reports (1/2) Understanding and Analyzing Application Crash Reports (2/2) Symbolicating Crash Reports Symbolication는 symbols로 알려진 소스 코드 방법 또는 함수 이름에 대한 역추적 주소를 결정하는 과정이다. 충돌 보고서를 처음 symbolicating하지 않고는 충돌이 어디서 일어났는지 결정하기가 어렵기 때문입니다. Figure 1 Overview of the crash reporting and symbolication process. 컴파일러는 당신의 소스 코드를 기계 코드로 번역할 때, 컴파일된 이진수의 각 기계 명령들을 .. 더보기
[번외편][실전] iOS 사용성 최대로 올려보자! UICollectionView Custom Layout 이 포스팅은 "[번외편] 사용성 최대로 올려보자!"의 Series 중 일부입니다. [번외편][이론] iOS 사용성 최대로 올려보자! UICollectionView Custom Layout [번외편][실전] iOS 사용성 최대로 올려보자! UICollectionView Custom Layout [번외편] iOS 사용성 최대로 올려보자! Shimmer 이 포스트는 iOS 사용성 최대로 올려보자! UICollectionView Custom Layout 실전편입니다. 이론편을 확인하고 오시면 더욱 이해하기 수월합니다. Demo Layout 구성 Heights 각 Cell 의 높이를 표시합니다. Layouts 각 Cell 의 View 를 표시합니다. Layout은 위와 같이 구성되어 있습니다. Srction 0 .. 더보기
[번외편][이론] iOS 사용성 최대로 올려보자! UICollectionView Custom Layout 이 포스팅은 "[번외편] 사용성 최대로 올려보자!"의 Series 중 일부입니다. [번외편][이론] iOS 사용성 최대로 올려보자! UICollectionView Custom Layout [번외편][실전] iOS 사용성 최대로 올려보자! UICollectionView Custom Layout [번외편] iOS 사용성 최대로 올려보자! Shimmer Creating Custom Layouts UICollectionViewFlowLayout 클래스는 최적화 되어 있기 때문에 Custom Layout 구현해야 하는 이유를 고려해야 합니다. Grid, Linear 줄 바꿈 레이아웃의 한 방향 이상의 스크롤링이 필요할때 모든 셀 위치를 자주 변경하기 위하여 Custom Layout을 작성하는 것이 기존 FlowL.. 더보기
RxSwift Error Handling 을 제대로 해보자! RxSwift를 사용하면서 좋은 점 중 하나는 Error Handling 을 간편하게 할 수 있다는 점입니다. 간단히 쓸수 있는 Error handling 도 중요하지만 보다 복잡한 조건을 추가해봅시다. Conditions: 1. Restful API 실패 시 3번의 retry 해야함 2. 실패하면 다시 요청할 때 까지 300 millisecond의 Interval 이 있어야 함. 3. 특정 Error 값이 발생할 경우에만 retry 를 해야 함 어떻게 해야 할지 감이 오시나요? 바로 소개합니다. ObservableType retryWhen(predicate:maxRetry:timeInterval:scheduler) 의 Util 함수를 만들었습니다! 2019-09-03 16:56:13.589: retry.. 더보기
왜 MVVM 을 사용할까요? 이 포스트는 기본적인 MVVM 의 지식을 알고 있다는 가정하에 설명되며 개인적인 의견이 많이 포함되어있습니다. 왜 MVVM 을 사용할까요? 저는 개인적으로 3가지 이유를 들수 있습니다. 1. 구체적인 View 를 알지 못하더라도 요구사항에 따라 ViewModel 을 설계할 수 있습니다. 2. ViewModel을 재사용 단위로 설계할 수 있습니다. 3. Testable 합니다. Github Repositories 를 검색할 수 있는 기획이 있다고 가정해 봅시다. 구체적인 View 를 알지 못하더라도 요구사항에 따라 ViewModel 을 설계할 수 있습니다. 우리는 위에 간단한 Demo 에서 4가지 Case 의 요구사항을 정의할 수 있습니다. 1. Repository는 이름으로 검색할 수 있습니다. 2. 검.. 더보기