Swift Closure의 Capture

1. 개요 Swift에서 Closure는 코드 블록을 변수처럼 다룰 수 있는 기능입니다. 함수(Function)와 유사하지만, 주변 컨텍스트(Context)를 캡처할 수 있다는 점이 Closure의 가장 큰 특징이에요. 이 글에서는 Swift Closure의 Capture 방식에 대해...

Gesture Recognizer와 Responder Chain

Gesture Recognizer와 Responder Chain iOS 앱 개발을 하다 보면 CollectionViewCell을 눌렀는데 반응하지 않거나 하는 상황이 생겨요. 저도 그런 문제를 경험했고, 원인은 Gesture Recognizer와 Responder Chain의 관계에 있었어요. 이 글에서는 해당...

Swift에서 Instruments의 Points of Interest 활용법

Swift에서 Instruments의 Points of Interest 활용법 1. 개요 Instruments로 앱의 성능을 분석할 때, 복잡한 로그와 다양한 이벤트가 한데 섞여 있으면 “정확히 어떤 시점에 문제가 발생했는지” 파악하기 어려워요. 이럴 때 Instruments의...

Swift ARC Deep Dive

Swift ARC Deep Dive 1. 계기 예전에 ARC 관련 코드가 컴파일 단계에서 어떻게 동작하는지 확인하려고 SIL로 컴파일해서 분석하는 글을 쓴 적이 있어요. 그런데 SIL로 변환된 코드를 직접 보니, 몇 가지...

Particle Animation 메모리 최적화 방안 끄적임

Particle Animation 메모리 최적화 방안 끄적임 주의: 생각의 흐름을 정리하기 위한 글이라 앞 뒤 맥락없이 아무 말이나 할 수 있습니다. 이전에 Metal을 이용해서 Particle Animation을 만들었는데, 메모리 사용량 때문에 머리가...

ARC(Automatic Reference Counting)를 SIL로 직접 확인해보기

ARC(Automatic Reference Counting)를 SIL로 직접 확인해보기 1. Swift의 ARC, 직접 눈으로 볼 수 있을까요? Swift 개발을 하다 보면 “ARC는 인스턴스 생성 시 retain, 해제 시 release”라고 배우는 경우가 많아요. 하지만...

Metal을 이용한 Particle Animation

Metal을 이용한 Particle Animation 개요 이 글에서는 iOS에서 대량의 파티클 애니메이션을 효율적으로 구현하는 실제 경험을 공유합니다. Core Animation으로 시작해 Metal로 전환한 이유, 성능 비교, 자동화 Stress Test 경험을 공유합니다. Core...

Core Animation을 이용한 Particle Animation

Core Animation을 이용한 Particle Animation Safari의 ‘방해 요소 가리기(Hide Distracting Items)’처럼, iOS에서 Particle Animation을 구현해 보고자 합니다. 미리보기 CAEmitterLayer 활용 UIView 분해 애니메이션 1. CAEmitterLayer로 간단하게 만들기 빠르고 쉽고, 코드도...

UIKit Transform의 순서가 결과를 바꾸는 이유

UIKit Transform의 순서가 결과를 바꾸는 이유 개요 UIKit에서 CGAffineTransform을 사용할 때는 적용 순서에 따라 내가 원하는 결과가 나오지 않을 수 있습니다. 이 글에서는 transform 연산이 적용되는 수학적 구조를 분석하고, 코드...

CPU Based Animation vs GPU Based Animation

CPU Based Animation vs GPU Based Animation 1. 문제의식: iOS앱에서 애니메이션을 구현할 때 CPU를 써야 할까, GPU를 써야 할까? UIKit에서 애니메이션을 만들 때 UIView.animate나 CABasicAnimation을 쓰면 부드럽게 동작한다. 하지만 실시간...