본문 바로가기

학습활동

(15)
iOS FileSystem 실습 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 Welsh Haitian Creol..
APFS-iOS File System APFS-iOS File System 파일 시스템은 데이터 파일, 운영 체제와 연결된 파일의 영구 스토리지를 처리 → 자료를 쉽게 발견 및 접글 할 수 있도록 보관하고 조직하는 것 또한 가르키기 때문에 중의적 표현이다 파일 시스템은 디렉토리를 사용하여 계층적 조직을 만듦 → 파일 시스템의 구성과 코드 적용되는 규칙을 이해해보자 FileManager 파일 시스템 컨텐츠에 대한 인터페이스 파일들을 관리하기 위한 객체 iOS SandBox 구조 iOS File System은 SandBox 구조 → 아이들이 모래사장 안에서만 놀고, SandBox를 나올 땐 흙을 털고 나오게 하는 것에 비유 → 내부와 외부를 적절하게 분리시킨 구조 → 앱마다 별도의 파일을 생성하여 공유되지 않도록 막으며, 외부로부터의 접근을 막..
KeyChain App에서 정보를 저장하는 방식 UserDefaults NSCache CoreData Server-side KeyChain FileManager KeyChain Apple에서 제공하는 API Collection 중 하나 사용자 대신 Chunk Data를 안전하게 저장해주는 것 → Chunk Data: 큰 데이터를 작은 조각으로 나눈 것 사용자의 온라인 계정의 고유 암호를 저장할 때, 간단한 암호를 재활용하는 경우가 있는데, 이는 보안상 안전하지 않은 방법 KeyChain Service API는 암호화된 데이터 베이스에 사용자의 데이터를 저장하는 메커니즘을 제공하여 이 문제를 해결해줌 → 암호를 안전하게 저장해준다면 사용자는 더이상 단순한 암호를 재활용하는 것이 아닌, 복잡한 암호를 선택하는 것이 가능해지..
Swift Performance (2) Reference Counting Heap에 저장된 메모리는 Reference count를 계산하여 0이 되었을 때, 메모리 해제를 안전하게 할 수 있음 이 작업은 빈번하게 일어나며, 단순 count를 계산하는 것에서 끝나지 않음 Reference Count의 증감을 계산할 때 Heap에 다중 스레드 문제가 생길 수 있기 때문에, 단일 스레드만 Count를 계산할 수 있도록 해야함 → Reference Count 계산은 빈번하게 일어나기 때문에 스레드 접근을 제한하는 비용은 유의미함 → Reference Count를 atomic하게 함으로 안전하게 관리 nonatomtic이 기본으로 바뀜 atomic - 다른 프로세스나 쓰레드에 의해 interrupt 되지 않고 수행이 완료될 때까지 무결성을 유지 - 안..
Swift Performance (1) Swift Performance Performance: 앱의 성능.성능의 예시 → 성능을 최대한으로 이끌어 내어 좋은 앱을 만들기 위해 노력해야함 자료구조에서 시간복잡도(Big O). ex) O(n) → y = x 시간복잡도를 비교할 때 O(n^2+2)의 +2는 결과에 영향이 적다고 판단하여 O(n^2)과 동일하게 취급 마찬가지로 O(2n) = O(n) 다형성 함수의 기능적 다형성과 상속에 의해 만들어진 계층 관계를 활용하는 기술 비슷하지만 살짝 다른 타입들을 효율적으로 표현하기 위한 개념 장점 : 재사용성, 확장성, ISP, 코드 가독성 Perfomance에 영향을 주는 3가지 → 오른쪽으로 갈 수록 성능 저하, 왼쪽으로 갈 수록 성능 향상 → 참조타입을 활용하여 추상화를 진행하면 오른쪽으로 편향될 수..
URL Loading System URL Loading System 표준 Internet 프로토콜(ex HTTP)을 사용하여 URL과 상호 작용하고 서버와 통신 URL Loading System은 비동기이기 때문에, 앱이 응답을 하면서 데이터나 오류를 별도 처리 가능 URL Session 인스턴스로 하나 이상의 URLSession Task 인스턴스를 생성 → 이것으로 데이터를 앱에 반영, 파일을 다운로드, 데이터와 파일을 원격 위치에 업로드를 함 private browsing의 경우 Ephemeral Configuration을 사용해야함 각 Session은 주기적 업데이트를 위해 Delegate와 연결되어있음 → Custom Delegate를 사용하면 사용자가 지정한 Completion handler를 호출 X → 만약 Default D..
동시성 프로그래밍 동기 프로그래밍(Sync Programming) - 프로그램의 흐름과 이벤트의 발생 및 처리를 종속적으로 수행 즉, 순차적으로 일처리를 진행하는 것 비동기 프로그래밍(Async Programming) - 프로그램의 흐름과 이벤트의 발생 및 처리를 독립적으로 수행 즉, 비순차적으로 일처리를 진행하는 것 병렬 프로그램 - 물리적으로 분리하여 처리 - 동일 혹은 유사한 작업을 나누어 처리 - 실제로 동시에 여러일을 처리 -> 그러기 위해선 다수의 물리적 코어가 필수적 - 규모가 큰 단위의 작업을 처리 -> 이 안에서 동시성을 처리할 수도 있음 동시성 프로그래밍 - 여러 작업을 동시에 하는 거”처럼” 작업하는 것 -> 이를 가능하게 하는 방법으로 나온것이 비동기 프로그래밍
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..

728x90