본문 바로가기

스위프트18

[Swift 5.5] Async / Await Swift 개발을 하다보면 Closure나 Completion Handlers를 사용하는 asynchronous(비동기) 프로그래밍을 많이 하게 된다. 이처럼 많은 비동기 작업, 오류 처리, 비동기 호출 간의 제어 흐름이 복잡할 때 문제가 된다. 많은 비동기 작업에는 수많은 tab이 들어간 deeply-nested closures가 필요하게 되고, 콜백은 오류 처리를 매우 어렵고 장황하게 만든다. 비동기 호출 간의 제어 흐름이 복잡할 때는 어떠한 closure가 completion handler에서 사용될 때, capture에 대해 신중하게 생각해야 하는 상황이 발생할 수도 있다. 그래서 나오게 된 것이 async와 await다. async와 await는 Swift 5.5부터 새로운 비동기 프로그래밍 패.. 2021. 12. 20.
Displaying a Bottom Sheet in iOS 15 Using UISheetPresentationController 이번 게시물은 제가 AppCoda라는 메일구독서비스를 통해 매주 알림받고 있는 이슈들 중에서 Displaying a Bottom Sheet in iOS 15 Using UISheetPresentationController라는 게시물을 읽고, 한 번쯤 한글로 정리하면 나중에 도움이 될 것 같아 게시글을 작성하게 되었습니다. 언제나처럼 제가 읽히는대로 번역을 한 것이기 때문에 의역이 많고, 잘못된 언어선택이나 번역이 있을 수 있으니 그런 부분은 댓글로 알려주시면 바로 수정하겠습니다 :) SwiftUI가 릴리즈되면서, 누군가는 UIKit의 시대가 이제 끝난거냐고 묻습니다. 하지만 UIKit의 시대는 아직 끝나지 않았습니다. iOS 15에서 애플이 UIKit와 관련된 새로운 feature를 내놓았기 때문이죠! .. 2021. 7. 11.
다익스트라 (Dijkstra) 오늘은 최단거리 구하는 알고리즘 중 다익스트라 알고리즘에 대해 알아보려 합니다. 학교에서 갓 2학년에 되었을 때 알고리즘 수업시간에 다익스트라를 배웠었는데요, 사실 1학년 말에도 과 학회 선배들이 다익스트라를 알려줬었습니다. 하지만 저는 이것만큼 거부감드는게 없었어요ㅠㅠ 그냥 다익스트라 라는 단어 자체가 너무 어려워 보였던 것 같습니다. 하지만 이제와서 다시보니 왜 이렇게 간단한 개념을 이해조차 못했는지.. 이렇게 보니 저도 그 때보다 성장하긴 했나봐요ㅎㅎ.. 다익스트라는 V개의 정점과 음수가 아닌 E개의 간선을 가진 그래프 G에서 특정 출발 정점 (S) 에서부터 다른 모든 정점까지의 최단경로를 구하는 알고리즘 (1:N) 입니다. 벨만-포드 알고리즘과 달리 음의 가중치를 가지지 않아, 각 정점을 최대 한.. 2021. 3. 9.
XCTest tips and tricks that can level up your Swift testing iOS에서의 Unit Test를 위해 XCTest에 대해 알아보던 중 XCtest tips and tricks that can level up your Swift testing 이라는 블로그를 보게 되었습니다. XCTest에 대한 내용과 참고 게시물의 내용을 함께 번역 및 정리해보면 좋을 것 같았습니다. 중간중간 제가 이해가지 않는 tip들은 직접 예시코드를 작성해보면서 이해해보려고 노력해봤는데, 아직까지는 좀 더 학습이 필요한 것 같아요 :) 그럼 먼저 XCTest가 무엇인지부터 알아볼까요? What is XCTest? 먼저 애플에서는 XCTest에 대해 이렇게 말하고 있습니다. Create and run unit tests, performance tests, and UI tests for your X.. 2021. 3. 3.
PriorityQueue (우선순위 큐) Priority Queue (우선순위 큐)는 말 그대로 사용자가 지정한 조건에 따라 우선순위가 정해집니다. 일반적인 Queue는 단지 데이터가 들어오는 순서에 따라 FIFO(First In First Out) 구조를 따르게 되는데, Priority Queue는 우선순위가 높은 데이터부터 pop됩니다. PriorityQueue는 우선순위에 따라 Heap(힙) 자료구조로 데이터를 저장하게 되기 때문에 삽입과 삭제의 시간복잡도는 O(log n)으로 매우 빠른 시간을 자랑합니다. 제가 이 Priority Queue (우선순위 큐)를 Swift로 직접 구현하기 위해 이전 게시물에서 Heap(힙) 자료구조를 공부했었습니다!! Queue도.. Stack도.. PriorityQueue도 없는 Swift는... 사용하려.. 2021. 2. 19.
강한 순환 참조 / 강한 참조 사이클 (Strong Reference Cycle) STRONG REFERENCE CYCLE Strong Reference Cycle (강한 순환 참조)란 무엇을 말할까요? 저는 iOS 개발을 공부하면서 iOS와 관련된 게시글이나 정보를 찾다보면 메모리 관리에 관한 이야기가 정말 많다고 생각이 들었습니다. 그리고 이 게시물에서 다뤄볼 강한 순환 참조도 메모리와 관련되어 있습니다. 그래서 오늘은 강한 순환 참조에 대해서 아래 예시와 함께 살펴보겠습니다. 먼저, 아래 코드와 같이 Person과 Car이라는 클래스가 있다고 가정합시다. 그리고 Person class는 Car 속성을, Car class는 Person 속성을 가지고 있습니다. class Person { var name = "Jamie" var car: Car? } class Car { var mo.. 2020. 12. 20.