본문 바로가기

다우 & iOS

(2)
스위프트에서 빌더 패턴 구현 두끼 전건우 UIKit을 사용해 iOS 개발을 하다보면 개발 속도 향상 등의 이유로 인해 Storyboard를 사용하지 않고 코드만으로 UI를 구성하게 되는 경우가 종종 있다. UI를 코드로 반복해서 구현하다 보면 UI Component 마다 자주 호출되는 Property가 따로 있다는 것을 알게된다. 예를 들어 UILabel을 구현할 땐 경험상 text, font, textColor, textAlignment 순으로 자주 호출한다. UILabel 객체를 Builder 패턴을 사용해 생성하는 예제를 통해 자주 사용되는 Property를 어떻게 간단히 초기화할 수 있는지 알아보자. Builder 패턴이란 여러 속성을 가진 복잡한 객체를 간결하게 생성하기 위해 사용한다. 먼저 Builder의 Protocol..
스레드 안전한 객체 구현 스레드 안전성을 구현하는 방법은 크게 두가지가 있다. 임계영역을 제거한다. 임계영역을 참조하는 연산을 동기화한다. 이 글에서는 객체지향 프로그래밍 시에 스레드 안전성을 구현하는 방법에 대해 서술하고자 한다. 첫 번째 방법은 함수형 프로그래밍에 적합하기에 두 번째 방식을 위주로 서술한다. 객체지향 프로그래밍에서 임계영역이 발생할 가능성이 존재하는 위치는 단 두 곳밖에 존재하지 않는다. 바로 클래스 변수와 인스턴스 변수이다. 따라서 스레드 안전성을 확보하기 위해서는 이들에 직접접근을 허용하지 않고 여기에 접근하는 모든 함수, 예를 들면 게터, 세터 등에 동기화 처리를 해주어야 한다. class Cat { private let semaphore: DispatchSemaphore = .init(value: 1)..