Apple🍎
-
SwiftUI 뷰 계층 형성의 모든 것Apple🍎/SwiftUI 2025. 5. 25. 16:02
SwiftUI를 처음 접하면서 가장 직관적이면서도 헷갈리는 부분 중 하나는 뷰가 어떻게 구성되고 계층이 형성되는지입니다. 겉보기에는 단순해 보이는 코드가 실제로는 복잡한 뷰 계층 구조를 만들어내는 마법 같은 일이 일어나죠. 오늘은 이 마법의 비밀을 함수형 빌더 패턴부터 차근차근 풀어보겠습니다.함수형 빌더 패턴이란 무엇인가?SwiftUI의 뷰 계층을 이해하기 위해서는 먼저 함수형 빌더 패턴(Functional Builder Pattern)을 이해해야 합니다. 이 패턴은 객체지향 프로그래밍에서 사용하는 빌더 패턴과는 근본적으로 다른 접근 방식입니다.전통적인 빌더 패턴 vs 함수형 빌더 패턴먼저 전통적인 빌더 패턴이 어떻게 작동하는지 살펴보겠습니다.// 전통적인 빌더 패턴 (객체지향적 접근)class UIVi..
-
DSL과 SwiftUI: 도메인 특화 언어의 이해와 활용Apple🍎/Swift 2025. 5. 24. 23:02
들어가며우리가 일상적으로 사용하는 프로그래밍 언어들은 대부분 범용적인 목적으로 설계되었습니다. Swift, Java, Python 같은 언어들은 웹 개발부터 모바일 앱, 데이터 분석까지 다양한 분야에서 활용할 수 있죠. 하지만 때로는 특정 분야에서 더 직관적이고 효율적으로 문제를 해결할 수 있는 전용 언어가 필요합니다. 이것이 바로 DSL(Domain Specific Language)의 개념입니다.SwiftUI는 이러한 DSL의 훌륭한 예시입니다. UI 구성이라는 특정 도메인에 특화되어 설계된 언어로, 개발자가 더 직관적이고 선언적인 방식으로 사용자 인터페이스를 구성할 수 있게 해줍니다. 이 글에서는 DSL의 기본 개념부터 시작해서 SwiftUI가 어떻게 DSL로 작동하는지, 그리고 이를 가능하게 하는 ..
-
Swift 개발자를 위한 Objective-C 문법 요약Apple🍎/Objective-C 2025. 5. 23. 15:34
1. 기본 구문 차이파일 확장자와 구조Swift와 Objective-C는 파일 구조부터 차이가 있습니다.Swift파일 확장자: .swift단일 파일에 모든 코드 포함 가능Objective-C헤더 파일(.h) - 인터페이스 선언구현 파일(.m) - 실제 구현 코드예를 들어 Person 클래스를 생성할 때Objective-C 헤더 파일 (Person.h)#import @interface Person : NSObject@property (nonatomic, strong) NSString *name;@property (nonatomic, assign) NSInteger age;- (void)introduceYourself;@endObjective-C 구현 파일 (Person.m)#import "Person.h"..
-
Objective-C의 Selector와 Dispatch TableApple🍎/Objective-C 2025. 5. 21. 22:12
Selector의 개념과 역할Selector는 Objective-C 메시지 전달 시스템의 핵심 요소로, 간단히 말해 메서드의 이름을 식별하는 타입입니다. 기술적으로는 SEL 타입으로 표현되며, 내부적으로는 C 문자열에 대한 특별한 포인터로 구현되어 있습니다.셀렉터의 가장 중요한 특성은 그것이 단순한 문자열이 아니라, 런타임 시스템에 의해 관리되는 고유한 식별자라는 점입니다. 이 고유성은 메서드 검색 과정을 매우 효율적으로 만들어 줍니다.Selector의 핵심 특성메서드 식별자: Selector는 메서드의 이름과 매개변수 레이블을 포함한 식별자입니다.문자열 기반: 내부적으로는 문자열이지만, 런타임 시스템에 의해 관리되는 고유한 식별자로 변환됩니다.타입 정보 없음: Selector는 매개변수 타입이나 반환 ..
-
Objective-C: Small Talk과 Message 전달 패러다임Apple🍎/Objective-C 2025. 5. 21. 16:51
Objective-C의 스몰톡과 메시지 전달 패러다임Objective-C는 Smalltalk에서 큰 영감을 받은 언어로, 객체지향 프로그래밍의 핵심 개념 중 하나인 '메시지 전달(message passing)' 패러다임을 채택했습니다. 이 패러다임은 Swift를 포함한 다른 많은 현대 언어들과는 다른 접근 방식을 취합니다.메시지 전달 패러다임의 기본 개념Objective-C에서는 객체에 메서드를 '호출(call)'하는 것이 아니라, 객체에 '메시지를 보낸다(send a message)'는 개념을 사용합니다. 이 차이점은 단순한 용어의 차이가 아닌 근본적인 실행 모델의 차이입니다.일반적인 객체지향 언어에서는object.method(parameters); // 메서드 직접 호출반면 Objective-C에서..
-
좀 더 Low 하게 가보자~ Swift 저수준 메모리 관리Apple🍎/Swift 2025. 4. 25. 20:25
ARC(Automatic Reference Counting)의 작동 원리ARC는 Swift에서 메모리를 자동으로 관리하는 메커니즘입니다.참조 카운팅 기본 원리: 각 참조 타입 객체(클래스 인스턴스)는 자신을 가리키는 참조의 개수를 추적하는 참조 카운트를 가집니다.카운트 증감 동작객체에 새 참조가 생성될 때 → 카운트 증가참조가 범위를 벗어날 때 → 카운트 감소카운트가 0이 되면 → 메모리에서 해제참조 타입강한 참조(strong): 기본값, 참조 카운트를 증가시킴약한 참조(weak): 참조하는 객체가 메모리에서 해제될 수 있음, 참조 카운트 증가 안 함, 자동으로 nil이 됨미소유 참조(unowned): weak과 유사하지만 nil이 되지 않음, 참조 객체가 반드시 자신보다 오래 살아있다고 가정순환 참조 ..
-
🎧 AVFoundation 오디오 분석을 위한 데이터 다루기Apple🍎 2025. 4. 24. 21:48
📦 1. 미디어 파일 구조 이해🔹 컨테이너와 트랙.mp4, .mov, .m4a 등은 컨테이너 형식컨테이너 내부에는 여러 트랙이 존재🎥 Video Track🎧 Audio Track💬 Subtitle Track 등👉 AVAsset을 통해 각 트랙을 구분하고 추출할 수 있다.🎵 2. 오디오 트랙 추출let asset = AVAsset(url: fileURL)let audioTracks = asset.tracks(withMediaType: .audio)오디오 트랙만 골라서 가져올 수 있음여러 오디오 트랙이 있을 수 있으므로 필요한 경우 조건 필터링 필요.mp3는 트랙 기반이 아니라서 예외 처리 필요🧪 3. AVAssetReader + AVAssetReaderTrackOutput컴포넌트 역할AVAs..
-
🎬 Final Cut Pro Workflow Extension 개발 환경 세팅하기Apple🍎/Workflow Extensions 2025. 4. 23. 09:54
Building a Workflow Extension | Apple Developer DocumentationCreate a workflow extension in Xcode by using the Final Cut Pro Workflow Extension template.developer.apple.com1️⃣ Workflow Extension 문서 요약📌 Workflow Extension이란?Final Cut Pro 내부에서 실행되는 macOS 앱 기반의 확장 프로그램이다.플러그인처럼 보일 수 있지만, 실제로는 macOS 앱이 Final Cut Pro 내부에서 구동되면서 독립적인 UI와 기능을 제공한다.이를 통해 사용자는 타임라인 마커, 편집 흐름, 메타데이터 등을 자동화하거나 외부 서비스와 연동할..