본문 바로가기

전체 글

(37)
Observer Pattern 개요TodoMate라는 프로젝트를 진행하면서 다음과 같은 기존 상황에서 리팩토링을 진행하고 있었다 TodosInMonthView특정 유저(userId)의 이번달 [Todo]를 보여주는 뷰TodoListView특정 유저(userId)의 오늘날짜의 [Todo]를 보여주는 뷰TodoManager실시간 업데이트가 적용되는 [Todo]를 가지고 filter를 통해 각각의 userId에 알맞은 TodoListView에 전달 기존에는 그냥 간단하게 TodoManager의 todos에 filter를 적용하여 TodoListView에 [Todo]를 전달했다 TodoManager는 실시간 업데이트와 CRUD 작업을 수행하면서 상태를 가지는데, 다시보니 너무 많은 역할을 가지고 있다고 생각했고TodoListView도 tod..
Cannot preview in this file 개요 프로젝트 앱 코드를 작성하는데 한동안 프리뷰를 안 쓰다가, 프리뷰를 사용해 보려는 어느 순간 오류가 발생했다어디서 언제 발생하게 되었는지 잘 모르겠어서 오류가 발생할만한 코드를 찾으며 시간을 낭비하고, 결국 Crash Log를 분석해가며 알게 된 내용을 정리한다 흔한 오류 해결법Preview가 안 되는 이유는 여러 가지가 있을 수 있는데, 다음과 같은 방법들로 해결할 수 있다 XCode와 관련해서 가장 간단하지만 효과적인 방법으로 XCode 재시작을 하는 것과 Derived Data 삭제 및 Clean Build Folder 수행이다Derived Data는 XCode가 프로젝트를 빌드할 때 생성하는 임시 파일들을 저장하는 디렉터리다/Users/USERNAME/Library/Developer/Xcod..
UserNotifications 개요UserNotifications는 사용자에게 알림을 전달하는 기능을 제공하는 프레임워크다 Local Notifications는 앱 내부에서 생성되고, 특정 시간이나 이벤트에 따라 사용자에게 알림을 보낸다Remote Notifications는 서버에서 APNs(Apple Push Notification service)을 통해 푸시 알림을 보낸다 후자에 대해서는 추후 애플 개발자 등록을 하게 되면 정리를 추가하겠다 해당 글의 예시에선 NotificationManager라는 클래스를 정의하여 수행하는데, 내부적으로 UNUserNotificationCenter을 이용한다관련된 핵심 요소들을 나열하면 다음과 같다 UserNotificationsUNUserNotificationCenter - UNUserNoti..
EventKit 개요이 글에서는 EventKit에 대해 정리한다 EventKit으로 캘린더 권한 허가 상태 및 요청을 수행하고, 캘린더와 캘린더이벤트 그리고 미리 보기와 관련된 데이터를 관리할 수 있다이 모든 것은 EKEventStore를 통해 할 수 있고, 이때 사용되는 타입으로는 EKCalendar와 EKEvent가 있다 해당 정리글에서 만든 예시 프로젝트에서는 캘린더의 이벤트 처리에 대해서만 수행한다간략하게 핵심 요소들만 나타내면 다음과 같다 EKEventStore.authorizationStatus.requestFullAceessToEvents.calendars → [EKCalendar].events(NSPredicate) → [EKEvent].predicateForEvents → NSPredicate.save...
MapKit 개요이 글은 MapKit에 대한 정리 글이다다음과 같은 개념들에 대해 정리한다 CoreLocationMap ViewMark, Annotation, UserAnnotationMapCameraPositionMKMapItem.onMapCameraChangeLocalSearch와 LookAroundPreviewMKLocalSearch LookAroundPreview CoreLocationMapKit에 대해 알아보기에 앞서 우선 CoreLocation에 대해 정리한다CoreLocation은 iOS 앱에서 위치 관련 기능을 구현하는 데 사용되는 Apple의 프레임워크다 CLLocationManager - CoreLocation의 핵심 클래스로, 위치 서비스를 관리한다(권한 요청)CLLocationCoordinate..
@Namespace와 .matchedGeometryEffect 개요최근 SwiftUI의 Animation 관련하여 공부를 하다가, @Namespace와 .matchedGeometryEffect(id:in:)에 대해 알게 되었다이들은 SwiftUI에서 애니메이션 효과를 만들 때 사용되는 강력한 도구로, 서로 다른 뷰 사이에서 부드러운 전환 애니메이션을 만들 수 있다 뭔가 유용한 것 같은데 어떻게 활용될지는 잘 몰라서 그 당시 그냥 간단한 예시로만 정리했었는데,최근에 유튜브를 보다가 관련 영상이 떠서 보다가 글로 다시 정리하게 되었다 @NamespaceSwiftUI에서 고유한 네임스페이스를 생성하는 프로퍼티 래퍼다주로 .matchedGeometryEffect(id:in:)와 함께 사용되어 애니메이션의 컨텍스트를 제공한다리팩터링해서 뷰에서 따로 인자로 사용하려면 Name..
AVFoundation 개요이 글에서는 AVFoundation의 주요 구성 요소들을 살펴보고, 그들 간의 관계를 정리한다그리고 AVKit은 AVFoundation을 기반으로 좀 더 고수준의 기능을 제공해 주는데, 이에 관한 내용도 마지막에 정리한다 AVFoundationAVFoundation은 미디어 처리, 제어, 가져오기 등의 핵심 기능 제공한다주요 클래스들은 다음과 같다 AVPlayerAVAssetAVPlayerItemAVAudioSessionAVRecorderAVCaptureDevice AVPlayer와 AVPlayerItem, AVAssets세 클래스의 관계는 아래 그림과 같다   AVAsset는 미디어 데이터를 나타내는 객체로, 비디오나 오디오 파일과 같은 미디어의 메타데이터와 트랙 정보를 포함한다AVAsset은 실제..
App Intents 개요향후 Apple Intelligence로 인해 Siri와 App Intent에 대해 공부해 둬야겠다는 생각을 하고 있었는데이번기회에 App Intent에 대해 정리한 글을 작성한다이 글은 다음 영상(WWDC24)에서 발표한 내용을 정리한 글이다  App Intents 다음 이미지처럼 App Intents는 앱의 기능을 외부에서 사용하는데 공통적인 인터페이스라고 볼 수 있다App Intents는 주로 두 가지 방식으로 사용된다 Actions 정의: 앱의 기능을 시스템에 알려주는 역할, 이를 통해 Siri나 Spotlight가 앱의 기능을 인식하고 사용자에게 제공할 수 있다데이터 제공: 앱이 가진 데이터를 외부에 제공하는 역할, 이를 통해 앱 외부에서도 앱의 데이터를 활용할 수 있다 핵심 구성요소 Int..