분류 전체보기

Combine | Overview
안녕하세요:) 느슨해진 아리… 정신 체리!입니다. 2022년, 캘리포니아 사과농장 출신 컴바인이라는 친구와 친해져보기로 했습니다. 친해지려면 어떤 친구인지 알아봐야겠죠? A unified, declarative API for processing values over time 애플의 WWDC 2019 발표에선 다음과 같은 문장으로 combine을 정의했는데요. 정리해서 말하면 이벤트 처리 연산자들을 결합해서 👯비동기 이벤트를 처리하는 선언형 API👯 라고 할 수 있습니다. 비동기 이벤트는 네트워크 연결이라든지, 파일을 불러온다든지 그런 과정에서 나중에 느릿느릿 생기는 데이터를 말하죠? 하지만 비동기 프로그래밍 방식이 새롭게 생긴게 아니라 옛날에도 현재에도 존재하고 있었어요. Apple에서 제공하는 다양한 ..

SPM으로 설치한 Crashlytics에서 누락된 dsyms 업로드하기
1. Firebase SDK를 클론해준다. 그리고 클론받은 폴더 내부의 Crashlytics 폴더로 이동해서 pwd 실행후 upload-symbols의 경로를 복사해둔다. git clone https://github.com/firebase/firebase-ios-sdk.git cd firebase-ios-sdk/Crashlytics pwd 2. Archives 폴더로 이동해서 원하는 아카이브로 가서 dSYMs 폴더가 있는 경로를 복사해둔다. cd /Users//Library/Developer/Xcode/Archives//.xcarchive/dSYMs 3. GoogleService-Info.plist 파일이 있는 프로젝트 경로를 복사해둔다. 3. 위의 경로들을 아래의 코드처럼 결합해서 실행해준다. /Use..

iOS | 샌드박스와 File System
Sandbox 샌드박스는 어린 아이를 보호하기 위해 샌드박스에서만 놀도록 하는데 유래한 보안 모델입니다. iOS에서 앱 샌드박스는 커널 수준에서 앱의 데이터에 대한 접근을 제한하는 기술입니다. 앱 샌드박스가 있는 이유는? 앱이 손상되었을 때 사용자의 데이터나 시스템이 위험하지 않지 않도록 하는 역할을 합니다. 보안을 위해서 앱을 설치할 때 운영 체제는 자동으로 해당 앱에 대한 샌드박스를 만듭니다. 샌드박스가 없을 경우(왼쪽)에는 해당 앱에 보안 허점이 있을 때 공격자는 앱을 제어해서 시스템 리소스나 모든 데이터를 가지고 이것 저것 할 수 있겠죠 그래서 오른쪽과 같이 하나의 앱에 하나의 샌드박스를 만들어서 앱이 손상될 경우 시스템 및 사용자 데이터에 대한 손상을 방지하도록 설계되어 있습니다. 샌드박스 전략..

iOS | Authorization & Privacy, CoreLocation, 위치로 주소 변환하기
Overview 애플의 플랫폼내에서는 사용자의 개인 정보를 굉장히! 중요하게 다룬다는 느낌을 받을 수 있습니다. 여담이지만 FBI가 애플에게 아이폰 암호해제를 요청했는데 사용자들의 프라이버시를 위해 해주지 않았다는 일화도 있죠... Human Interface Guidelines에선 필요한 개인정보와 관련된 데이터와 리소스, 사용방법을 투명하게 공개해서 사용자와의 신뢰를 구축하는 것이 중요하다고 말하고 있습니다. 따라서 다음과 같은 데이터나 리소스를 사용할 때 액세스 권한을 요청해야 합니다. 위치, 건강, 재정, 연락처 및 기타 개인 식별 정보를 포함한 Personal data 이메일, 메시지, 캘린더, 연락처, 게임 플레이 정보, Apple Music 활동, HomeKit 데이터, 오디오, 비디오, 사..

Swift | Array capacity, reserveCapacity
Swift의 모든 배열은 데이터를 저장할 수 있는 특정 양의 메모리를 예약합니다. insert나 append와 같은 추가 작업에 대비하기 위해서인데요. 배열에 요소를 추가할 때 해당 배열이 예약된 용량(capacity)을 초과하기 시작하면 배열은 더 큰 메모리 영역을 할당하고 해당 요소를 새 메모리에 복사합니다. 새 메모리의 크기는 이전 메모리 크기의 배수입니다. capacity를 초과해서 append 될 때마다 2배로 늘어나고 있습니다. 새 메모리를 할당할 때마다 성능이 문제되는거 아냐? 하겠지만 우리는 재할당에 대한 비용을 걱정하지 않아도 됩니다! 왜냐하면 이렇게 두배씩 증가하는, 기하급수적으로 메모리를 증가시키는 전략을 사용하기 때문입니다! 배열 크기가 커질수록 재할당 빈도는 줄어들게 되겠죠? 그런..

iOS ) Autolayout3 - Adaptive Layout, Size Class
Adaptive Layout iOS는 다양한 종류의 기기가 있고, 사용자는 세로 화면, 가로 화면, 아이패드의 스릿 뷰, 멀티태스킹 등을 통해 앱을 사용할 수 있습니다. 그런 다양한 화면에 대응할 수 있는 Adaptive Layout 대해서 알아보도록 해요. Size class Trait collection Adaptive Layout에서 알아야할 핵심적인 두가지의 개념입니다. Size Class 사이즈 클래스에서는 iOS 기기를 사용해 나타낼 수 있는 다양한 화면 영역을 분류하고 인터페이스의 너비, 높이를 Compact class, Regular class 두 가지로 나누어 표현합니다. Regular Class - interface의 너비 혹은 높이가 비교적 크다 Compact Class - inter..