[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

🍎 Apple/Swift 30

[WWDC22] Link fast: Improve build and launch times

안녕하세요 inu입니다. 오랜만에 포스팅을 작성하네요 :) 오랜 숙원 사업이었던 'Link fast: Improve build and launch times' 감상을 드디어 마쳤습니다. 개인적으로 조사한 정보들도 포함해 글로 정리해봤습니다. 중간중간 CS 관련된 내용도 나와서 이해하기가 어려울 수 있는데, 정적 라이브러리와 동적 라이브러리의 개념과 동작방식에 대해서 정도만 이해해도 충분히 얻어가는 세션이었다고 생각합니다. 저처럼 컴파일 및 모듈 관련 지식이 부족했던 분들에게 도움이 되길 바랍니다. 사전정보 오브젝트 파일 : 소스코드 파일이 컴파일러에 의해 컴파일된 이후 생성되는 파일로, 이 파일은 실행가능한 파일(excutable file)이나 라이브러리(library) 파일을 만들기 전 중간 단계의 바..

🍎 Apple/Swift 2024.04.08

[Swfit] resolvedColor(with:) / UITraitCollection.current

resolvedColor(with:) UIColor의 Instance Method인 resolvedColor는 주어진 trait을 기반으로 UIColor를 resolve합니다. 해당 UIColor가 다크모드를 지원하는 Dynamic Color일 경우 현재 다크모드 스타일에 맞는 Color를 반환합니다. Core Graphics의 Color 요소인 CGColor는 Dynamic Color를 지원하지 않습니다. 이러한 특징때문에 CGColor를 필요로하는 요소에서는 다크모드가 자동으로 적용되지 않습니다. let black = UIColor.myBlack.cgColor 이 과정에서 resolve가 일어납니다. cgColor는 Dynamic Color를 지원하지 않기때문에 현재의 trait에 맞춰 resolve..

🍎 Apple/Swift 2023.10.27

[Swift] Attributes

Attributes 선언 혹은 타입에 새로운 정보를 추가하는 역할을 수행한다. 예를 들면 discardableResult 는 함수의 선언부에 사용되어서, 해당하는 함수의 리턴값을 사용부에서 사용하지 않아도 에러를 띄우지 않도록 컴파일러에게 알려주는 역할을 한다. @ 심볼을 통해 attribute를 확인할 수 있으며 심볼 뒤에는 그 attribute의 이름이 따라온다. 추가적인 정보가 필요할 경우 해당 attribute의 arguments도 뒤에 붙는다. @ @() 종류 attached macro도 Attributes 버전 제한둘때 쓰는 available 도 Attribute @available(iOS 10.0, macOS 10.12, *) discardableResult, dynamicCallable 등..

🍎 Apple/Swift 2023.07.29

[Swift] AVFoundation 기초

최근에 AVFoundation을 알아야 할 일이 있어서 공부를 좀 했습니다. 본 포스트는 애플 공식 문서의 의역을 대다수 포함합니다. AVFoundation 시청각 asset들로 작업하고, 장치 카메라를 제어하고, 오디오를 처리하고, 시스템 오디오 상호 작용을 구성할 수 있습니다. AVFoundation은 Apple 플랫폼에서 미디어를 검사, 재생, 캡처 및 처리는 등 광범위한 작업을 포괄하는 몇 가지 주요 기술 영역을 포괄하고 있습니다. UIKit 너머의 Core 프레임워크와 맞닿아 있는 프레임워크입니다. AVAsset https://developer.apple.com/documentation/avfoundation/avasset/ 시간이 지정된 시청각 미디어를 모델링하는 객체 해당 객체는 파일 기반의..

🍎 Apple/Swift 2023.07.15

[Swift][문서의역] Macro

본 포스트는 스위프트 공식문서의 매크로에 대한 설명을 의역한 것이며 편의를 위해 생략 혹은 추가된 내용이 있을 수 있습니다. Macro https://docs.swift.org/swift-book/documentation/the-swift-programming-language/macros 컴파일 타임에 코드를 만들 수 있는 기능 Macro는 컴파일할 때 소스코드를 변환해서 반복적인 코드를 최소화할 수 있도록 돕는다 컴파일시간에 Swift는 코드를 빌드하기 전에, 코드 안에 존재하는 모든 매크로를 확장(Expands)한다. 매크로의 특징 매크로의 코드 확장 작업은 추가적인 작업으로, 기존 코드를 수정하거나 삭제하지는 않는다. 매크로 코드와 매크로 확장 결과 코드 모두에서 유효한 Swift 코드 여부를 확인..

🍎 Apple/Swift 2023.07.15

[Swift] Mirror

Mirror Mirror란 reflection은 일반적인 프로그래밍 기능 중 하나로, 런타임에 동적으로 멤버를 검사하고 작업할 수 있습니다. 원래는 Swift같이 정적으로 타입을 지정하는 언어에는 사용하지 않지만 Swift2부터 지원이 추가되었습니다. Swift에서 reflection을 사용하면 struct, class 혹은 기타 타입에 관련없이 타입에 있는 stored property의 값을 읽을 수 있습니다. reflection을 사용하기 위해 필요한 객체가 Mirror입니다. Mirror는 인스턴스의 저장 property, collection 혹은 tuple의 요소 등에 대해 특정 인스턴스를 구성하는 부분을 설명합니다. Mirror는 어떻게 Mirror가 렌더링될지 지정하는 "display styl..

🍎 Apple/Swift 2023.05.18

[Swift] autoreleasepool

autoreleasepool 참조 카운트를 나중으로 미루고 이들이 한번에 감소되는것을 보장받기 위한 기법입니다. 주로 autoreleasepool을 자동으로 관리해주지 않는 Operation Queue에서 많이 사용합니다. autoreleasePool에 포함된 객체들은 코드가 autoreleasePool에서 벗어나면 한번에 참조 카운트가 줄어듭니다. func useManyImages() { let filename = pathForResourceInBundle for _ in 0 ..< 5 { for _ in 0 ..< 1000 { let image = UIImage(contentsOfFile: filename) } } } 이와 같이 여러개의 UIImage가 생성되는 케이스가 있다고 해봅시다. 이 경우 매..

🍎 Apple/Swift 2022.05.27

[Swift] UNUserNotificationCenter 살펴보기

UNUserNotificationCenter UNUserNotificationCenter UNUserNotificationCenter는 앱 혹은 앱 확장에서 발생하는 알림 관련 활동들을 관리할 수 있는 중앙 객체입니다. 앱에서 관련 기능을 다루기 위해서는 먼저 권한을 요청해야 합니다. options에 필요한 권한을 포함시켜 전달하고, 그 결과를 completionHandler로 받아 추가 작업을 수행합니다. options에 포함시킬 수 있는 권한은 위와 같습니다. 싱글톤 객체를 제공하기 때문에 이를 활용하면 됩니다. 여기에 아래에서 학습할 UNNotificationRequest 객체를 추가해서 알림을 설정합니다. UNMutableNotificationContent 알림의 내용을 설정할 수 있는 객체입니다..

🍎 Apple/Swift 2022.05.26

[Swift] PhotoKit으로 사진앱에서 사진 가져오기

PhotoKit으로 사진앱 사진 가져오기 이번에 동아리과제에서 기본 사진앱에서 사진을 가져오고, 이를 CollectionView로 띄워주는 기능을 구현했습니다. 매번 ImagePicker를 사용하고 PhotoKit은 사용해보지 못했는데 이번기회에 사용해봐서 좋았어요. 이를 구현하기 위해 학습한 개념과 구현 과정을 정리합니다! requestAuthorization 애플리케이션에서 사용자의 Photo 앱에 접근하기 위해서는 권한이 필요합니다. 먼저 plist에서 Privacy - Photo Library Usage Description 옵션을 입력합니다. 해당 옵션에 입력된 String 값이 권한요청 Alert 창에 출력됩니다. 그리고 앱 내부에서는 PHPhotoLibrary의 authorizationSta..

🍎 Apple/Swift 2022.05.22

[Swift] URLSession Cahce Policy

Network Caching 네트워크 작업은 고비용의 작업입니다. 따라서 매번 동일한 데이터를 받아올 때마다 요청과 응답을 수행하게된다면 시간 및 리소스를 상당히 낭비하게 됩니다. 그래서 필요한 것이 Caching입니다. Caching을 사용하면 불필요한 작업을 최대한 줄여서 시스템의 성능을 향상시킬 수 있습니다. URL Loading System을 통해 이러한 Caching에 설정을 수행할 수 있습니다. Cache Store 및 Cache Policy를 변경할 수 있습니다. URL Loading System에서는 4가지 Cache Policy를 제공합니다. useProtocolCachePolicy : protocol 특성에 따른 기본 캐시정책 (서버에서 전달한 Cache-Control Header를 그..

🍎 Apple/Swift 2022.05.18