본문 바로가기

SWIFT44

[iOS/Swift] 메모리 누수가 발생하는 원인과 해결방안(Strong, weak, unowned) 지난 포스팅에서 예고한 [메모리 누수]에 대한 내용을 다뤄볼까 합니다. 다만, 이번 포스팅에서는 탈출 클로저가 아닌 일반적인 예시 코드를 통해 정상적인 ARC 작동과정 메모리 누수 발생 (Memory leak) 해결 방법 위 3가지 순서로 미처 다루지 못한 메모리 누수의 원인과 해결과정을 살펴볼 예정입니다. 메모리 누수(Memory leak)와 3가지 참조유형 순환 참조(Retain Cycle)로 인하여 Reference Count가 0으로 수렴하지 않아 발생하는 문제 본론으로 들어가기에 앞서, 메모리 누수(Memory leak)에 대해 살펴볼까요? 그 전에, CS 내용 중, ARC 동작 방식에 대한 사전지식이 필요하겠지요. 메모리 누수(Memory leak)란? 둘 이상의 객체간의 강한 상호참조 관계인.. 2023. 7. 19.
[iOS/Swift] Non-Escaping Closure 와 Escaping Closure(@escaping) 아래 코드는 흔히 프로젝트를 진행하며 활용하고, 마주치게 되는 비동기 처리 혹은 네트워크 관련 메서드입니다. func fetchGithubProfiles(username: String, completion: @escaping (Result) -> Void) { // ... do { let decoder = JSONDecoder() let profiles = try decoder.decode(GithubProfile.self, from: data) completion(.success(profiles)) } catch let error { completion(.failure(NetworkError.decodingError(error))) } } 위 fetchGithubProfiles 메서드의 completi.. 2023. 7. 6.
[iOS/UIKit] UIScrollView, AutoLayout 구현하기 (With. Scrollable Content Size Ambiguity 에러 해결) 프로젝트를 진행하며, 처음 ScrollView를 스토리보드에서 구현하게 되었을 때 Scrollable Content Size Ambiguity 란 오류를 느닷없이 때려맞았는데 말입니다.. 여타 UIKit 클래스 혹은 컴포넌트와는 달리, UIScrollView는 다소 까다로운 제약조건을 가지고 있기 때문입니다😭 기초적인 사용방법을 다루기에 앞서 우선, UIScrollView에 대해 간략하게 짚고 넘어가보도록 하겠습니다. UIScrollView의 정의와 특징 손가락 움직임에 따라 Origin을 조정하며, Contents를 스크롤 하는 View 용어 그대로 사용자가 손가락으로 쓸어내리거나(Scrolling) 혹은 확대, 축소(Zooming)하는 기능을 담아내는 UIKit 클래스 중 하나입니다. UIScroll.. 2023. 5. 23.
[iOS/Combine] 스레드 작업처리 방식과 큐의 작업 분산방식(Sync vs Async / serial vs Concurrent) 앞선 포스팅에서 미처 다루지 못한 내용부터 시작해볼까요? DispatchQueue 란 키워드를 활용해, 큐(Queue)는 스레드에 작업을 분산시키게 됩니다. 그렇다면, ① 큐(Queue)가 작업을 스레드에 분산시키는 방식 과 ② 각각의 스레드(Thread)가 작업을 처리하는 방식 에 대해 코드 예시를 통해 살펴보면서, 궁극적으로 동기/비동기 프로그래밍에 대한 내용도 함께 알아보도록 하겠습니다. [참고링크] - 동시성 프로그래밍, 스레드와 큐 (https://lena-chamna.netlify.app/post/concurrency_programming_thread_and_queue/) GCD(Grand Central Dispatch)와 큐(Queue)의 종류 개발자는 큐(Queue)를 만들며, GCD는 스.. 2023. 5. 8.
[iOS/Combine] 동시성 프로그래밍의 필요성과 Queue(큐)의 역할 CPU, 코어, 그리고 프로세스와 스레드의 개념을 살펴본 포스팅의 중요한 키워드와 개념을 한번 더 되짚고 넘어가자면 다음과 같습니다. 컴퓨터 뇌 역할을 담당하는 하드웨어, CPU는 2개의 작업 처리 방식을 가지고 있습니다. ① 다수의 코어(Core)를 활용한 병렬적(Parallelism) 작업 ➟ 여러개의 코어를 중심으로 멀티 프로세스, 멀티 스레드를 통해 병렬적 작업을 실행 ② 프로세스를 갈아 가며, 작업하는 동시적(Concurrency) 작업 ➟ 마치 '동시에 실행되는 것 처럼' 보이도록 프로세스를 번갈아 실행하는 작업 ➟ 프로세스를 번갈아 매우 빠르게 처리하므로, 마치 동시(찰나)에 진행되는 것 처럼 보임 하지만, 여기서 한가지 의문점이 발생할 수 있는데 말입니다.. 다수의 코어와 스레드(멀티 .. 2023. 4. 10.
[iOS/Swift] 유용한 대표 고차함수, map, filter, reduce 다루기 요 근래 코딩테스트를 슬쩍 건드려 보구 있는데 말입니다😨 배열 관련 문제를 풀때, 고차함수를 활용하는게 여간 손에 익질 않아 길고 긴 하드 코딩으로 꾸역꾸역 통과하는 경우가 많았는데요.. 그래서, 이번 포스팅에서는 배열을 다룰때 자주 활용되는 map, filter, reduce 예시 코드를 통해 정리해보는 시간을 가져볼까 합니다. 근데, 고차함수가 무엇인가요? 다른 함수를 ①매개변수로 받거나, ②함수의 결과를 반환하는 함수 매개변수로 받고, 함수의 결과로 받는다라.. 이전에 다뤘던 클로저의 1급 객체함수의 특징과 비슷하지 않나요? 고차함수란 Swift에서 이미 제공되고 있는 표준 라이브러리로서, 함수형 패러다임을 지원하는 Swift에서는 다양한 고차함수를 사용할 수 있습니다. 주로 사용하는 map,.. 2023. 4. 5.