애니매이션 이미지를 다루는 법

이미지는 앱에서 핵심적은 요소 중 하나입니다. 기본적으로 이미지는 정적이지만, 애니매이션 기능을 가진 이미지 역시 존재합니다. 이번 포스트에서는 iOS에서 이를 어떻게 다루는지, 서드파티에서는 이를 어떻게 취급하는지 알아보도록 하겠습니다. [Read More]

NSAttributedString 분석

텍스트 처리는 개발의 모든 영역에서 중요하게 다뤄지는 부분입니다. 그 중에서도 iOS는 문자열을 직접 사용자에게 보여줘야하기 때문에 문자열을 다양한 형태로 보여주기 위한 기능을 제공합니다. 이번 포스트에서는 이러한 기능을 제공해주는 핵심 클래스인 NSAttributedString에 대해서 알아보겠습니다. [Read More]

Foundation이 제공하는 특별한 Collection들

이번 포스트에서는 Foundation이 제공하는 Collection중에서 특별한 기능을 가진 Collection에 대해서 알아보도록 하겠습니다. 여기서 특별한 Collection이라고 하는 것은 Swift 표준 라이브러리가 제공하는 Collection인 Array와 Set, Dictionary와 이에 대응되는 Foundation 클래스인 NSArray, NSSet, NSDictionary 그리고 이들의 Mutable 버젼 이외의 추가적으로 제공되는 Collection들을 이야기합니다. 특별한 Collection들은 기존 Collection들에서 추가적인 속성을 더한 것들입니다. [Read More]

Core Data 시작히기(1) - 개요

이번 포스트부터 Core Data가 무엇인지, 어떻게 사용하는지에 대해서 알아보고자 합니다. 오랜만에 블로그를 작성하는 것이기 때문에 이번 시리즈는 짧은 호흡으로 최대한 자주 작성하여 Core Data를 빠르게 익히는 것을 목표로 하고 있습니다. [Read More]

Timer 사용하기

특정 시간이 지난 후에 이벤트를 발생시킨다거나, 반복적인 주기로 특정 작업을 수행하는 등의 행위는 프로그램에서 흔하게 필요로 하는 요구사항입니다. 이번 포스트에서는 이러한 상황에서 유용하게 사용할 수 있는 Timer에 대해서 알아보도록 하겠습니다. [Read More]

NSLock을 알아보자

멀티스레드를 활용할 경우가 많아지면서 자연스럽게 동기화 문제가 따라오게 되었습니다. 이 문제를 해결하기 위한 기본적인 방법은 중요한 지점(Critical Section)에 접근을 통제하는 것입니다. 이를 위한 방법론으로 lock, semaphore 등이 있는데 오늘은 Foundation에서 기본적으로 제공하는 NSLock과 관련 클래스들을 살펴보도록 하겠습니다. [Read More]

Auto Layout 이야기(1) - Auto Layout 기초

iOS 개발에서 Auto Layout은 큰 비중을 차지합니다. SwiftUI가 나오면서 이후에는 이러한 상황이 바뀌게 되겠지만 SwiftUI가 활성화되기 까지는 아직 시간이 남았기 때문에, 여전히 배워야 할 이유는 남아있습니다. 이번 포스트를 시작으로 Auto Layout의 동작 원리를 하나하나 살펴보면서 Auto Layout을 자세히 살펴보도록 하겠습니다. [Read More]

View의 ContentMode

UIView에는 ContentMode라는 속성이 있습니다. 뷰는 내부적으로 자신이 띄울 컨텐츠의 비트맵 데이터를 캐싱하고 있는데, 뷰의 bounds가 변했을 때(물론 ContentMode는 최초로 컨텐츠를 그릴 때도 영향을 미칩니다.) 매번 컨텐츠를 새로 그리는 것은 비용이 많이 드므로, 캐싱하고 있던 비트맵 데이터를 활용하여 빠르게 반응을 하게 됩니다. 이 때 뷰는 컨텐츠의 사이즈를 어떻게 조절할지, 어디에 배치할지를... [Read More]

iOS 뷰컨트롤러의 생명주기

이번 포스트에서는 뷰컨트롤러의 생명 주기에 대해서 알아보도록 하겠습니다. 앱을 구성하는 핵심 요소인 뷰컨트롤러 역시 자체적인 생명 주기를 가지고 있고, 이 과정을 잘 이해하는 것은 앱 개발에 있어 중요합니다. [Read More]

iOS 앱의 생명주기

이번 포스트에서는 iOS 앱의 생명주기에 대해서 알아보도록 하겠습니다. iOS 13에서 Scene이라는 개념이 나오면서, 생명주기의 개념에 변화가 생겼습니다. 이 포스트에서는 기존의 생명주기 개념과, 새롭게 도입된 생명주기를 알아보도록 하겠습니다. [Read More]

동시성 프로그래밍(1) - 동시성 기본

지난 포스트들에서 스레드에 대해서 알아보았습니다. 하지만 스레드를 제대로 사용하기 위해서는 POSIX 스레드를 사용해야 한다던가, Core Foundation 프레임워크를 사용해야 하는 등 현재 Swift 자체만으로 사용하기 어려운 부분이 많고, 저수준의 개념이다보니 프로그래머가 신경써야할 부분이 많아 초보자가 쓰기에는 난점이 많았습니다. 그래서 스레드 프로그래밍은 굉장히 어렵고, 코드를 잘못짜면 오히려 성능과 안정성에서 전혀 이득을 보지... [Read More]

스레드 프로그래밍(1) - 스레드의 기초와 스레드 관리

프로세서의 발전 속도가 더뎌지면서, 단일 칩의 성능 향상보다는, 칩의 수를 늘림으로써 동시에 여러 작업을 수행함으로써 성능향상을 꾀하는 방향으로 나아가는데, 이를 활용하기 위해서는 반드시 멀티스레드 방식의 프로그래밍을 활용해야 합니다. 이 포스트에서는 이 멀티스레드의 기초인 스레드(Thread)와 애플 플랫폼에서 이를 적용하는 방법에 대해 알아보겠습니다. [Read More]

Segue 파헤치기

앱 프로그래밍에서 화면을 띄우거나 전환하는 것은 중요한 과정입니다. iOS에서 화면을 전환하는 것은 여러 방법이 있지만 오늘은 Segue를 이용한 방법을 정리해보았습니다. 그리고 Segue를 코드로 다루는 방법도 있는데, 이것도 함께 다루겠습니다. [Read More]

Responder와 Responder Chain, 그리고 First Responder

textField,textView를 다루다가보니 키보드가 화면을 가리는 경우가 생겼습니다. 엔터키를 눌러도, 키보드 바깥을 눌러도 아무런 반응이 없어서, 관련 키워드를 찾아보다가 First Responder라는 개념을 알게 되었습니다. 해당 개념을 잘 사용해서 문제는 해결했지만, First Responder를 찾다 보니 Responder라는 개념도 알아둘 필요가 있다는 생각이 들었습니다. 그래서 관련 글을 찾아 정리해보았습니다. [Read More]