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

분류 전체보기 495

[2022 카카오 채용연계형 인턴십] 면접 후기 및 결과

면접 후기 안녕하세요 이누입니다! 지난번에 카카오 채용연계형 인턴십에 지원하여 코딩 테스트를 봤다는 게시글을 올린 적이 있는데요. 운이 좋게도 서류 및 코딩 테스트 전형에 통과해서 면접까지 보고 왔습니다!! 결과를 떠나서 진짜진짜진짜 좋은 경험이었어요. 혹시 인턴 지원을 고민 중이신 분이 있다면 꼭 지원해보라고 말씀드리고 싶습니다ㅎㅎ 무조건 이득이에요. 면접 준비 서류 및 코딩 테스트 결과 발표일은 5월 24일, 면접일은 6월 2일로 일주일이 조금 넘는 준비기간이 있었습니다. 하지만 저는 학교 프로젝트들과 동아리 활동으로 조금 바빴기 때문에 엄청 많은 시간을 투자하지는 못했어요. 시간을 쪼개가며 틈틈이 면접 준비를 하다가 면접 3일 전부터 좀 몰입해서 대비를 했던 것 같네요. 면접 준비에서 특별히 새로운..

[Core Data] Core Data Stack

Core Data Stack Core Data는 4개의 주요 객체로 구성됩니다. 이를 CoreData Stack 이라고 합니다. Persistent Store 데이터를 영구적으로 저장하는 공간으로, 앱을 종료해도 지속적으로 데이터가 저장됩니다. 데이터 종류에 따라 2가지 종류로 나뉘어집니다. Atomic 저장소 : 데이터를 처리하기 위해서는 모든 데이터를 메모리에 로드해야 합니다. (XML, Binary, In-Memory) Non-atomic 저장소 : 필요한 부분만 메모리에 로드합니다. (SQLite) Core Data는 Non-atomic 저장소인 SQLite를 기본 저장소로 사용합니다. Object Model 어떤 데이터들이 저장되며, 해당 데이터들이 어떤 관계를 가지고 있는지 설명하는 객체입니다..

[Swift] GCD 정리하기

GCD GCD는 Grand Central Dispatch의 줄임말로, 멀티 코어 프로세스 시스템의 스레드 관리에 대한 책임을 운영체제 레벨에게 넘겨주는 기술입니다. GCD 내부에는 DispatchQueue를 읽는 멀티코어 실행엔진을 가지고 있어 이것이 등록된 작업을 읽어 스레드에 할당합니다. 개발자는 내부 동작에 대해 이해할 필요없이 Queue에 작업을 할당하기만 하면 되기 때문에 스레드관리가 훨씬 쉬워집니다. OperationQueue 역시 내부적으로는 GCD를 활용하고 있습니다. Dispatch Queue Dispatch Queue는 FIFO Queue의 형태로 작업을 순서대로 전달받습니다. 작업은 Block( { } ) 혹은 Dispatch Work Item 인스턴스로 캡슐화하여 전달합니다. ser..

[Swift] Operation Queue

Operation Queue Swift에서 Concurrency Programming을 구현할 때 사용하는 API 중 하나로, 주로 작업 사이에 의존성을 부여하거나 취소 기능을 구현할 때 사용합니다. Operation 하나의 작업을 나타내는 객체로, 보통 Operation class를 상속한 BlockOperation class를 사용하거나 직접 Operation class를 상속받고 Custom Operation을 구현하여 사용합니다. Operation은 서로에게 의존성을 부여할 수 있습니다. 또한 취소가 가능합니다. Completion Handler를 적용할 수 있습니다. Single-shot Object (실행이 완료된 인스턴스는 재실행이 불가능) Ready - Executing - Finished..

[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

[iOS Design Pattern] Decorator

Design Pattern - Decorator 주어진 상황 및 용도에 따라 특정 객체에 책임을 덧붙이는 패턴입니다. 기능 확장이 필요한 경우 서브클래싱 대신 사용할 수 있습니다. 기본구조 Decorator 패턴의 기본적인 구조입니다. Component : Component와 Decorator 측에서 구현할 인터페이스입니다. Decorator : Component를 상속하면서, 내부적으로 Component를 보유하고 있습니다. Concrete Component : Component를 구현한 구현체로, Decorate를 적용할 기본 객체입니다. Concrete Decorator : Decorator를 구현할 구현체입니다. 솔직히 아직까지는 단순한 상속과 뭐가 그렇게 다른건지 잘 와닿지 않습니다. 이를 Sw..

🍎 Apple/Patterns 2022.05.18

[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

[iOS] Remote data를 가져올 때 Data(contentsOf:)를 사용하면 안되는 이유

Remote data를 가져올 때 Data(contentsOf:)를 사용하면 안되는 이유 일단 이 메서드는 동기적으로 작동한다는 것이 기본입니다. 따라서 현재작업중인 스레드의 모든 작업을 해당 작업을 수행하는 동안 멈추게할 위험이 있습니다. 이는 사용성에 매우 악영향을 주겠죠? 그럼 DispatchQueue.global().async로 감싸주면 어떨까요? 이러면 스레드 문제도 해결되었으니 Data(contentsOf:)를 사용해도 괜찮은 것일까요? 아예 안된다고 못박을 수는 없겠지만, 권장하지는 않습니다. 먼저 main 스레드를 멈추는 문제는 해결했지만 여전히 GCD의 제한된 작업스레드 중 하나를 묶는 셈이 됩니다. 이는 직접적이진 않아도 간접적으로 성능에 영향을 줍니다. 또한 URLSession과 달리..

🍎 Apple/Question 2022.05.17
반응형