Swift

A collection of 21 posts
Clean-Swift, 무엇을 테스트 해야하는가
Swift Featured

Clean-Swift, 무엇을 테스트 해야하는가

현재 진행 중인 프로젝트에서는 Clean-Swift 를 이용해 화면 단위를 개발하고 있는데요, Clean-Swift(VIP Pattern) 컴포넌트에 대한 단위 테스트를 작성하기 위해 어떤 부분을 고민했는지 공유해보려고 합니다. Clean-Swift 에서는 Scene에 대한 단위 테스트를 작성할 때 크게 3가지의 단위 테스트를 통해 구현을 검증하도록 가이드합니다. 1. ViewController => Interactor 호출 테스트 2. Interactor => Presenter 호출
8 min read
확신이 없다면 Checked Continuation을!
Swift

확신이 없다면 Checked Continuation을!

URL의 미리보기 이미지(대표 이미지)를 Apple의 Link Presentation 프레임워크를 이용해 불러오도록 개발하며 특정 링크의 경우 아래와 같이 continuation misuse로 인한 leak이 발생하는 것을 확인하여 주의할 점에 대해 기록 삼아 남겨본다. 무엇이 문제였는지, 작성한 코드를 확인해 보자 Before func requestPreviewImage() async throws -> UIImage { let primaryImageProvider = self.linkMetadata?.imageProvider ?? self.
3 min read
Swift Concurrency 이전의 동시성 프로그래밍
Swift

Swift Concurrency 이전의 동시성 프로그래밍

들어가며 안녕하세요! 오늘은 Swift Concurrency가 등장하기 이전에는 동시성 프로그래밍을 구현하기 위해 어떠한 도구들을 사용했는지, 어떠한 맥락으로 동시성 프로그래밍을 도와주는 도구들이 등장하게 되었는지 더 나아가 Swift Concurrency는 어떠한 문제를 해결하기 위해 등장하게 되었는지 살펴보도록 하겠습니다. Thread 동시성 프로그래밍을 할 때 '스레드'라는 단어가 많이 언급되는데요, 스레드를 많이 쓰면 쓸수록 더 많은 작업을
17 min read
Bundle에 관하여
iOS

Bundle에 관하여

들어가며 안녕하세요 Noah입니다. Bundle Class는 Bundle directory를 추상화해 내부 구조를 몰라도 편하게 접근할 수 있도록 해주는데요, 오늘은 이 번들 디렉터리의 구조와 개념, Bundle class의 사용법에 대해 예제와 문서를 보며 함께 알아보도록 하겠습니다. Bundle Apple Developer Documentation에서는 Bundle Class를 아래와 같이 소개하고 있어요 A representation of the code and resources stored
20 min read
비동기 작업 캐시 하기
iOS Featured

비동기 작업 캐시 하기

들어가며 안녕하세요 Noah입니다. SOPT라는 동아리에서 대학생들이 모여 만들게 된 앱이 공개된지 얼마되지 않았음에도 불구하고 감사하게도 많은 회원 수를 유치하게 되었습니다. 서비스 소개 페이지 : https://havit.app/ 또 그만큼 돈으로 살 수 없는 소중한 피드백과, 사용자의 사용경험을 들어볼 수 있었는데요, 오늘은 사용자의 사용 경험을 높이기 위해 했던 경험 한 가지를 공유하고자
17 min read
Observer Pattern
Design-Pattern

Observer Pattern

안녕하세요 Noah입니다 :) 오늘은 Gang of Four 소프트웨어 디자인 패턴 중 행위 패턴에 속하는 Observer Pattern 에 대해서 알아보도록 하겠습니다. iOS에서 Observer Pattern은 Foundation framework의 NotificationCenter, KVO(Key Value Observing), Property Observer, Combine framework의 Publisher, Subscriber 등에서 쓰이는데요, Combine framework의 Publisher(Observable), Subscriber(Observer)과 Notification Center는 Observer Pattern과 비슷하지만 약간의
12 min read
Value Type은 무조건 Stack에만 할당될까?
Swift

Value Type은 무조건 Stack에만 할당될까?

* WWDC 2016 UnderStanding Swift Performance 세션을 보고 잘못 이해하고 있던 부분을 바로 잡기위해 실험을 통해 다시 풀어보았습니다. 위 세션을 아래의 포스트를 통해 정리해보았습니다. 관심있는 분들은 아래의 링크를 참조해주세요! Swift 성능 이해하기 struct-class 또한 Value Type이 정말 Stack에만 할당되는지, Heap에 할당되는지 확인해보고 싶어 여러도구를 활용해 Swift코해당 인스턴스가 어디에 할당되는지 분석해보며 확인해보려
8 min read
[weak self] 무조건 사용하는게 맞는걸까? 🤔
Swift

[weak self] 무조건 사용하는게 맞는걸까? 🤔

클로져에서 self를 캡쳐할 때 [weak self] 를 사용하는 경우는 순환 참조를 방지하기 위해 약한 참조로 클로져 내부에서 해당 클래스의 인스턴스를 사용할때 입니다. 클로져에서 약한 참조를 이용해 특정 인스턴스를 캡쳐하지 않으면 (여기서는 self를 캡쳐한다고 가정) self가 해제될 때까지 기다리고 self는 클로져가 해제될 때까지 기다리는 strong reference cycle 상황을 만들어 내게 됩니다.
18 min read
Customizing the UIKit status bar style
iOS

Customizing the UIKit status bar style

애플리케이션의 user interface와 잘 어울리는 status bar의 style을 설정해보자 당연하게도 Status bar의 콘텐츠는 사용자가 읽을 수 있거나(readable) 볼 수 있어야(visible) 사용자 경험이 좋을 것이다. 예를 들면 위와 같이 Status bar를 구성하는 것보다 위 처럼 Status bar의 style을 구성해야한다는 것이다. app level(앱 수준)또는 ViewController level(뷰 컨트롤러
4 min read
공식문서로 알아보는 Array - 배열
Swift

공식문서로 알아보는 Array - 배열

안녕하세요 Noah입니다 :) 오늘은 Swift의 자료구조 중 배열에 대해 알아보도록 하겠습니다😀 배열은 메모리 영역에 연속되어있는 데이터 구조로 논리적인 순서와 물리적인 순서가 같다는 특징을 가지고 있습니다. 배열은 특정 요소의 조회가 아주 빠르다는 특징을 가지고 있습니다. 특정 요소를 조회할 때 순회(traversing)하는 것이 아니라, 배열의 특징중 하나인 논리적인 순서(index)와 물리적인
15 min read
Swift 성능 이해하기 struct-class
Swift

Swift 성능 이해하기 struct-class

안녕하세요 Noah입니다 :) 좋은 개발자는 좋은 코드를 짜야 할 것입니다. 제가 생각하는 좋은 코드란, 팀원들이 보기에 좋은 코드를 작성하고, 안정적이고 속도가 빠른 코드를 작성해 결과적으로 앱을 사용하는 사용자에게 좋은 경험을 안겨주는 것이 좋은 코드라고 생각합니다. 이번 시간에는 좋은 코드를 작성하기 위한 초석으로 Swift 성능 이해하기라는 제목으로 알아봅시다!! 이번 편에서는 struct와 class에
39 min read
SwiftLint, GitHooks 적용하기
Swift

SwiftLint, GitHooks 적용하기

여러분 안녕하세요 Noah입니다:) 오늘은 SwiftLint를 Git-Hook과 함께 사용하는 방법에 대해 소개해보려 합니다 :) 먼저 SwiftLint가 처음이신 분들을 위해 잠깐 설명하고 가겠습니다!! 이미 잘 사용하고 계신 분들이라면 이 부분은 Skip 하셔도 무방합니다! 우리 Swift는 정말 많이 들어봤는데 뒤에붙은 lint는 뭘까요? 위키에서 찾아보면 린트(lint) 또는 린터(linter)는 소스 코드를 분석하여 프로그램
14 min read
if let과 guard let
Swift

if let과 guard let

안녕하세요 Noah입니다 :) 날이 아주 덥습니다 여러분~! ⛱☀️ 건강 유의하셔서 즐코딩하세요 ㅎㅎ🍉 오늘은 if문을 이용한 Optional Binding과 guard문을 이용한 Optional Binding에 대해 알아보도록 하겠습니다. Optional type의 값을 안전하게 가져오기 위해서는 Optional Binding을 해주어야 합니다. 먼저 if문을 사용해 Optional Binding을 하는 방법을 보도록 하겠습니다. if문을 이용한 Optional Binding let optionalName: String? = "Noah" if
4 min read
Swift Quick Sort(퀵 정렬)
Swift

Swift Quick Sort(퀵 정렬)

안녕하세요 Noah입니다 :) 이번 시간에는 Sorting 알고리즘 톺아보기 2부 마지막 시간입니다!!🥺 🥺 이번에 살펴볼 Sorting 알고리즘은 Quick Sort입니다. Quick Sort는 정렬 알고리즘 중 가장 인기 있는 알고리즘 중에 하나인데요, 1959년에 영국의 Tony Hoare란 분에 의해 고안되었다고 합니다. Quick Sort 역시 divide and conquer 전략을 사용해 정렬을 진행하는데요, Quick Sort에 대해 한번 알아봅시다!
11 min read
Swift Merge Sort(합병정렬)
Swift

Swift Merge Sort(합병정렬)

안녕하세요 Noah입니다 :) 이번 시간에는 Sorting 알고리즘 톺아보기 1부보다 조금 더 난이도가 있는 Sorting 알고리즘을 다루는 Sorting 알고리즘 톺아보기 2부를 진행하도록 하겠습니다 😄 이번 시간에 살펴볼 Sorting 알고리즘은 Merge Sort입니다. Merge Sort는 Computer Science의 divide and conquer 전략을 대표적으로 사용한 Sorting 알고리즘입니다. Merge Sort 먼저 Merge Sort가 데이터를 정렬하는 모습부터 먼저 살펴보겠습니다.
12 min read
Swift Insertion Sort(삽입정렬)
Swift

Swift Insertion Sort(삽입정렬)

안녕하세요 Noah입니다 :) 이번 시간에도 이어서 Sorting 알고리즘 톺아보기 1부를 진행하도록 하겠습니다 😄 이번 시간에 살펴볼 Sorting 알고리즘은 Insertion Sort입니다. Insertion Sort 먼저 Insertion Sort가 데이터를 정렬하는 모습부터 먼저 살펴보겠습니다. Insertion Sort 아직 코드와 정렬 순서를 살펴보지 않았기에 자세히는 알지는 못하지만, 점점 정렬되는 사이즈가 커짐을 알 수 있습니다. 위키백과에는 Insertion Sort가 다음과
5 min read
Swift Bubble Sort(거품정렬)
Swift

Swift Bubble Sort(거품정렬)

안녕하세요 Noah입니다 :) 지난 시간에 이어 Sorting 알고리즘 톺아보기 1부를 진행하도록 하겠습니다 😄 이번 시간에 살펴볼 내용은 Bubble Sort(거품 정렬)입니다. Bubble Sort는 이해하기 쉬워 교육용으로 가장 많이 쓰이는 정렬 알고리즘입니다. 그만큼 직관적이며, 이해하기 쉽습니다. Bubble Sort 먼저 Bubble Sort가 데이터를 정렬하는 모습부터 먼저 살펴보겠습니다. Bubble Sort 마치 탄산음료를 마실 때
3 min read
Swift Selection Sort(선택정렬)
Swift

Swift Selection Sort(선택정렬)

안녕하세요 Noah입니다 :) 본격적으로 장마가 시작되나 봅니다~ 다들 우산 챙겨 다니세요!!☂️ 오늘은 정렬 알고리즘에 대해 알아보려 합니다. Computer Science에서의 정렬 알고리즘은 item을 번호순이나 사전 순으로 일정한 순서대로 열거하는 알고리즘입니다. Swift에서는 간단하게 sort() 메소드 혹은 sorted() 메소드를 이용해 데이터를 정렬하곤 했었습니다. 이 메소드들도 내부적으로는 정렬 알고리즘을 이용해 데이터를 정렬합니다. 어떠한 정렬 알고리즘을
4 min read
Apple이 새로 공개한 오픈소스 Swift 컬렉션 패키지!
Swift

Apple이 새로 공개한 오픈소스 Swift 컬렉션 패키지!

안녕하세요 noah입니다 :) 오늘은 Swift 컬렉션 패키지에 대해 소개해보려 합니다. 요즘 알고리즘 문제 풀이를 하며 Swift에서 제공하는 여러 자료구조에 대해 찾아보던 중 2021년 4월 5일 Apple이 공개한 Swift 컬렉션 패키지를 알게 되었습니다. Swift의 공식 blog 글에 따르면 이번에 새로 공개한 Swift 컬렉션 패키지에서는 3가지의 범용 데이터 구조인 Array, Set 그리고, Dictionary를
5 min read
Swift의 함수는 일급함수인가?
Swift

Swift의 함수는 일급함수인가?

안녕하세요 :) Noah입니다. Swift에서는 함수가 First-class Function으로써 사용됩니다. Functional Programming a.k.a FP 에서 많이 언급되는 일급함수를 이번 기회를 통해 알아보고 정리해보는 시간을 가져보고자 합니다. First-class Function이란 다음의 조건을 만족하는 함수를 의미합니다. 이에 대한 개념은 1960년대 중반 Christopher Strachey 에 의해 처음 등장했다고 합니다. 1. 함수는 상수와 변수에 저장될 수
3 min read
공식문서로 알아보는 Swift의 Functions
Swift

공식문서로 알아보는 Swift의 Functions

안녕하세요 :) Noah입니다. 이 글은 애플의 스위프트 공식문서 를 스터디하며 중간중간 저의 개인적인 생각을 덧 붙여 쓴 글 입니다. “함수란 특정 기능(작업)을 수행하는 코드의 집합이다.” 함수를 선언할때는 func 키워드를 이용하여 선언하며 사용할때는 함수의 이름을 호출하여 사용해야합니다. 당연히 함수의 이름은 함수가 어떠한 기능을 수행하는지 다른 사람이 보아도 알 수 있게
19 min read