이미지는 앱에서 핵심적은 요소 중 하나입니다. 기본적으로 이미지는 정적이지만, 애니매이션 기능을 가진 이미지 역시 존재합니다. 이번 포스트에서는 iOS에서 이를 어떻게 다루는지, 서드파티에서는 이를 어떻게 취급하는지 알아보도록 하겠습니다.
[Read More]
NSAttributedString 분석
텍스트 처리는 개발의 모든 영역에서 중요하게 다뤄지는 부분입니다. 그 중에서도 iOS는 문자열을 직접 사용자에게 보여줘야하기 때문에 문자열을 다양한 형태로 보여주기 위한 기능을 제공합니다. 이번 포스트에서는 이러한 기능을 제공해주는 핵심 클래스인 NSAttributedString에 대해서 알아보겠습니다.
[Read More]
Foundation의 Swift 타입 브릿징
지난 포스트에서 이러한 이야기를 했었습니다.
[Read More]
Foundation이 제공하는 특별한 Collection들
이번 포스트에서는 Foundation이 제공하는 Collection중에서 특별한 기능을 가진 Collection에 대해서 알아보도록 하겠습니다. 여기서 특별한 Collection이라고 하는 것은 Swift 표준 라이브러리가 제공하는 Collection인 Array와 Set, Dictionary와 이에 대응되는 Foundation 클래스인 NSArray, NSSet, NSDictionary 그리고 이들의 Mutable 버젼 이외의 추가적으로 제공되는 Collection들을 이야기합니다. 특별한 Collection들은 기존 Collection들에서 추가적인 속성을 더한 것들입니다.
[Read More]
View 업데이트
iOS에서 뷰는 데이터 변화 및 사용자 입력에 따라 동적으로 업데이트 되어야 합니다. iOS에서는 이 과정을 어떻게 처리하는지 알아보도록 하겠습니다.
[Read More]
Core Data 시작하기(3) - Data Model 만들기(2) - relationship만들기
지난 포스트를 통해 Entity를 만들고 Attribute를 설정해보았습니다. 이번 포스트에서는 Entity간의 관계를 설정하는 방법을 알아보겠습니다.
[Read More]
Core Data 시작하기(2) - Data Model 만들기(1) - entity만들기
이번 포스트에서는 Core Data의 핵심 요소인 Data Model을 만들고 구성하는 방법에 대해서 알아보도록 하겠습니다.
[Read More]
Core Data 시작히기(1) - 개요
이번 포스트부터 Core Data가 무엇인지, 어떻게 사용하는지에 대해서 알아보고자 합니다. 오랜만에 블로그를 작성하는 것이기 때문에 이번 시리즈는 짧은 호흡으로 최대한 자주 작성하여 Core Data를 빠르게 익히는 것을 목표로 하고 있습니다.
[Read More]
Timer 사용하기
특정 시간이 지난 후에 이벤트를 발생시킨다거나, 반복적인 주기로 특정 작업을 수행하는 등의 행위는 프로그램에서 흔하게 필요로 하는 요구사항입니다. 이번 포스트에서는 이러한 상황에서 유용하게 사용할 수 있는 Timer에 대해서 알아보도록 하겠습니다.
[Read More]
NSLock을 알아보자
멀티스레드를 활용할 경우가 많아지면서 자연스럽게 동기화 문제가 따라오게 되었습니다. 이 문제를 해결하기 위한 기본적인 방법은 중요한 지점(Critical Section)에 접근을 통제하는 것입니다. 이를 위한 방법론으로 lock, semaphore 등이 있는데 오늘은 Foundation에서 기본적으로 제공하는 NSLock과 관련 클래스들을 살펴보도록 하겠습니다.
[Read More]
TableView의 변화를 처리하는 방법(1) - Batch Update
TableView의 데이터가 변했을 때, 우리는 종종 다음 메소드를 호출하고는 합니다.
[Read More]
2019-10-10-Auto Layout 이야기(2) - Intrinsic Content Size
지난 포스트에 이어서 Auto Layout에 대해서 좀 더 살펴보도록 하겠습니다.
[Read More]
DispatchQueue의 Qos
DispatchQueue를 사용할 때 백그라운드로 작업을 보내기 위해서 다음과 같은 코드를 사용하곤 합니다.
[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]
동시성 프로그래밍(3) - DispatchQueue
이번 포스트에서는 OperationQueue와 대비되는 동시성 기술인 DispatchQueue에 대해서 알아보도록 하겠습니다.
[Read More]
동시성 프로그래밍(2) - OperationQueue
이번 포스트부터는 좀 더 구체적으로 동시성을 도입할 수 있는 기술들을 알아보도록 하겠습니다. 그 중에서 이번 포스트에서는 OperationQueue에 대해서 자세히 알아보도록 하겠습니다.
[Read More]
동시성 프로그래밍(1) - 동시성 기본
지난 포스트들에서 스레드에 대해서 알아보았습니다. 하지만 스레드를 제대로 사용하기 위해서는 POSIX 스레드를 사용해야 한다던가, Core Foundation 프레임워크를 사용해야 하는 등 현재 Swift 자체만으로 사용하기 어려운 부분이 많고, 저수준의 개념이다보니 프로그래머가 신경써야할 부분이 많아 초보자가 쓰기에는 난점이 많았습니다. 그래서 스레드 프로그래밍은 굉장히 어렵고, 코드를 잘못짜면 오히려 성능과 안정성에서 전혀 이득을 보지...
[Read More]
스레드 프로그래밍(2) - RunLoop
지난 포스트에서 스레드의 기본에 대해서 알아보았습니다. 이번에는 스레드가 외부 이벤트를 받아들이는 방법에 대해서 알아보겠습니다.
[Read More]
스레드 프로그래밍(1) - 스레드의 기초와 스레드 관리
프로세서의 발전 속도가 더뎌지면서, 단일 칩의 성능 향상보다는, 칩의 수를 늘림으로써 동시에 여러 작업을 수행함으로써 성능향상을 꾀하는 방향으로 나아가는데, 이를 활용하기 위해서는 반드시 멀티스레드 방식의 프로그래밍을 활용해야 합니다. 이 포스트에서는 이 멀티스레드의 기초인 스레드(Thread)와 애플 플랫폼에서 이를 적용하는 방법에 대해 알아보겠습니다.
[Read More]
NotificationCenter 살펴보기
이번 포스트에서는 iOS의 Notification에 대해서 알아보도록 하겠습니다. Notification은 앱 내에서 비동기적으로 이벤트를 처리하는 데 있어서 상당히 중요한 역할을 합니다.
[Read More]
iOS 디바이스 크기 살펴보기
보통 아이폰은 안드로이드보다 OS나 화면 크기에서 파편화가 덜한 편입니다. 제조사가 애플 단 하나기 때문이죠. 하지만 iOS 디바이스도 이제는 화면 크기가 정말로 다양해졌습니다. Human Interface Guideline에서 들고 있는 디바이스 종류만 16종에 달할 정도죠.
[Read More]
PhotoKit 간단 사용법 - 변경 요청하기
지난 번 포스트에 이어서 이번에는 PhotoKit에 변경 요청을 하는 법에 대해서 알아보도록 하겠습니다.
[Read More]
PhotoKit 간단 사용법 - 사진 불러오기
PhotoKit은 iOS의 기본 사진 앱이 관리하는 사진과 비디오에 접근하여 데이터를 가져오거나 편집, 삭제 등을 할 수 있게 해주는 프레임워크입니다.
[Read More]
ModalPresentationStyle, TransitionStyle 파헤치기
지난번 Segue 파헤치기에서 못 다룬 부분을 마저 다뤄보고자 합니다. 바로 ModalPresentationStyle과 ModalTransitionStyle에 대한 부분입니다. 이 두가지 옵션은 화면이 어떤 방식으로 뜰 지, 어떻게 전환될지를 결정합니다.
[Read More]
Segue 파헤치기
앱 프로그래밍에서 화면을 띄우거나 전환하는 것은 중요한 과정입니다. iOS에서 화면을 전환하는 것은 여러 방법이 있지만 오늘은 Segue를 이용한 방법을 정리해보았습니다. 그리고 Segue를 코드로 다루는 방법도 있는데, 이것도 함께 다루겠습니다.
[Read More]
Responder와 Responder Chain, 그리고 First Responder
textField,textView를 다루다가보니 키보드가 화면을 가리는 경우가 생겼습니다. 엔터키를 눌러도, 키보드 바깥을 눌러도 아무런 반응이 없어서, 관련 키워드를 찾아보다가 First Responder라는 개념을 알게 되었습니다. 해당 개념을 잘 사용해서 문제는 해결했지만, First Responder를 찾다 보니 Responder라는 개념도 알아둘 필요가 있다는 생각이 들었습니다. 그래서 관련 글을 찾아 정리해보았습니다.
[Read More]