IOS
-
[iOS, macOS] StoryBoard 없이 코드 베이스 UI 구성하기Apple🍎 2025. 4. 22. 20:54
📱 iOS vs 🖥 macOS – 코드베이스 UI를 위한 프로젝트 세팅 비교UIKit과 AppKit, 두 플랫폼 모두 코드로 UI를 작성하고 싶을 때가 있습니다.그런데 둘 다 Xcode에서는 Storyboard나 SwiftUI를 기본으로 요구하죠.오늘은 iOS와 macOS에서 스토리보드 없이 코드만으로 UI를 구성하기 위한 초기 세팅 방법을 비교해봅니다.🧭 목차왜 스토리보드를 쓰지 않나?iOS (UIKit) 프로젝트 세팅macOS (AppKit) 프로젝트 세팅주요 차이점 요약마무리1. 왜 스토리보드를 쓰지 않나?유지보수가 어렵고 충돌 위험이 큼협업 시 Git conflict 빈번복잡한 UI는 코드가 더 명확할 수 있음재사용성과 확장성이 낮음그래서 많은 개발자들이 코드로 UI를 직접 작성하고 싶어하죠..
-
DispatchQueue와 DispatchWorkItem 비교하기Apple🍎/Swift 2025. 4. 17. 18:50
DispatchQueue란?DispatchQueue는 작업들을 FIFO(First-In-First-Out) 순서로 관리하고 실행하는 객체입니다. 주로 비동기 작업을 관리하고 백그라운드 스레드에서 코드를 실행할 때 사용합니다.// 글로벌 큐를 사용한 비동기 작업DispatchQueue.global().async { // 백그라운드에서 실행할 코드 print("백그라운드 작업 실행 중...")}// 메인 큐를 사용한 UI 업데이트DispatchQueue.main.async { // UI 업데이트 코드 print("메인 스레드에서 UI 업데이트 중...")}DispatchWorkItem이란?DispatchWorkItem은 실행 가능한 코드 블록을 캡슐화한 객체입니다. 작업을 객체화함으로써..
-
CloudKit: 모든 엔티티의 프로퍼티 값을 옵셔널로 강제하는 이유Apple🍎/CloudKit 2025. 4. 15. 21:24
CloudKit와 옵셔널: 왜 모든 프로퍼티가 옵셔널이어야 할까?이번에 앱을 만드는 과정에서 CoreData에 CloudKit을 연동시키려고 하자 앱이 빌드되지가 않았는데요.문제는 기존의 엔티티 모델들의 속성 값들이 옵셔널이 아니기 때문이었습니다.그렇다면 왜 CloudKit을은 모든 엔티티의 속성 값이 옵셔널로 강제하는 것일까요?클라우드 환경의 불확실성CloudKit은 네트워크를 통해 작동하는 원격 데이터베이스 시스템입니다. 로컬 데이터베이스와 달리, 네트워크 통신에는 여러 불확실성이 존재합니다연결 중단: 사용자의 인터넷 연결이 언제든 끊길 수 있습니다.데이터 전송 지연: 대용량 데이터를 전송할 때 시간이 오래 걸릴 수 있습니다.부분적 데이터 전송: 모든 데이터가 항상 완전히 전송된다는 보장이 없습니다...
-
iOS 앱 개발에서 버전과 빌드의 이해하기Apple🍎 2025. 4. 12. 21:05
iOS 앱을 개발하고 지속적으로 업데이트하다 보면 반드시 마주치게 되는 개념이 '버전'과 '빌드'입니다. 이 두 가지는 앱의 릴리스 관리에 핵심적인 요소이지만, 많은 개발자들이 그 차이점과 효과적인 관리 방법에 대해 혼란을 겪곤 합니다. 버전(Version)과 빌드(Build) 이해하기버전(Version)이란?버전은 사용자에게 보이는 앱의 '공개 식별자'입니다. 보통 세 개의 숫자로 구성된 형식(예: 1.2.3)을 사용하며, 이를 'Semantic Versioning'(의미론적 버저닝)이라고 부릅니다. iOS 앱에서 버전은 CFBundleShortVersionString 키로 Info.plist 파일에 저장됩니다.버전 번호의 각 부분은 다음과 같은 의미를 가집니다:Major(주 버전): 첫 번째 숫자로,..
-
SwiftUI의 View 생명주기와 상태 관리: iOS와 macOS의 차이점 상세 분석Apple🍎/SwiftUI 2025. 4. 10. 21:05
문제 상황SwiftUI로 멀티 플렛폼 앱을 개발하면서 다음과 같은 이상한 현상을 경험했습니다.ActivityDetailView에서 활동 데이터를 편집했습니다.편집한 데이터는 데이터베이스에 성공적으로 저장되었습니다.편집 모드에서 보기 모드로 돌아간 후iOS에서는 편집된 최신 데이터가 화면에 표시됩니다.macOS에서는 편집 전의 원래 데이터가 화면에 표시됩니다.같은 코드를 실행했는데도 플랫폼에 따라 다른 결과가 나왔습니다. 데이터베이스에는 제대로 저장되었으나, macOS에서는 UI에 반영되지 않았습니다.플렛폼 별 차이가 생긴 이유NavigationStack(path: $path) { HomeView(viewModel: viewModel, path: $path) .navigationTitle..
-
순수 함수란?Programming🧑💻/Functional Programming 2025. 2. 10. 23:22
수학에서 f(x) = x + 1 같이 함수는 x에 특정 값을 넣으면 항상 동일한 결과가 나옵니다. 프로그래밍에서 순수 함수도 이와 같은 원칙을 따릅니다. 항상 단일 값을 반환합니다 (동일한 입력에 대해 동이한 출력 반환)반환 값은 오직 입력 매개변수에만 기반하여 계산됩니다기존 값을 변경하거나 부작용을 일으키지 않습니다위의 원칙들을 따르면서 나타나는 다음 특성들 때문에 이를 '순수'하다고 합니다 입력과 출력의 관계가 순수하게 유지됩니다 (같은 입력 = 같은 출력)외부 세계와의 상호작용 없이 순수하게 계산만 수행합니다부작용 없이 순수하게 자신의 역할만 수행합니다 순수함수가 왜 필요한데?전통적인 클래스 기반 접근 방식의 문제점장바구니에 책이 포함되어 있을 때 할인을 해주는 비즈니스 로직을 구현한다고 해봅시다...
-
String Catalog를 이용한 LocalizationApple🍎 2024. 8. 26. 18:21
Localization 관련 설정Project > Info Localization 섹션Use Base Internationalization 옵션 사용 과정Use Base Internationalization 를 선택하면 개발시 사용한 문자열을 기초로해서 Localization 파일을 구성할 수 있습니다.다음과 같이 여러 View에서 사용한 String 문자열들에 대하여 Localization을 하기 위해서는먼저 String Catalog를 만들어야합니다.String Catalog 란? : 각 String에 대해서 각 언어별 번역을 제공하는 File 입니다.XCode의 Navigator 에서 Command + N (or 우클릭 + New File)String Catalog 선택 Localizable을 ..
-
데이터 모델 개념을 기초로 엔티티와 클래스 관계 알아보기Apple🍎/CoreData 2024. 1. 9. 00:53
Entity와 Attribute는 대응하는 Class와 Property가 생긴다. 보통 Core Data의 엔티티와 엔티티의 속성을 설정할 때는 Code Data Model Editor를 사용해왔다. 여기서 Entity를 설정하면 실제 코드로는 어떻게 구현되는 것일까? Generated Classes 데이터 모델안에서 엔티티와 속성이 어떻게 구성되는지 간단히 말하면 Editor에서 설정한 엔티티와 속성에 대응하는 클래스와 프로퍼티가 코드로 생성된다. How Is your Data Model Really Created. Core Data Editor를 사용하여 엔티티와 속성을 만들면 데이터 모델은 정적이고 (컴파일 타임에 이미 모두 정해지고) 런타임에는 더이상 건들지 못한다고 생각할 수 있지만 Core D..