xcode 10

GitHub Actions를 통한 다국어 자동화 (1) | Git Submodule, Lokalise

최근 스레드를 통해 정말 많은 자극을 받고 있는 딜라이트룸 iOS 개발자 리디님. 다양한 개발 스토리를 들으면서 나도 나중에 내실 있는 나만의 앱을 만들고 싶다는 꿈이 점점 커지고 있다. 이 글에서는 리디님이 연사로서 SwiftRise 컨퍼런스에서도 소개해주셨고 내 프로젝트에도 적용해 볼 만한 것이어서 공부해 보면서 구현했던 부분을 공유해보려 한다. 사실 컨퍼런스에서는 도입한 도구나 구체적 구현 방법을 자세히 설명해 주셨다기보다 왜 이런 자동화 시스템을 구축했었어야 했는지에 대해 사고의 변화와 점진적인 디벨롭 과정에 대해 충분히 납득할 수 있게 설명해 주셔서 더 기억에 남았던 듯싶다! 결과적으로 우리는 iOS 개발자이기 이전에 product developer이기에 이런 자동화 도구나 AI를 잘 활용해서 ..

iOS 2025.02.18

[Swift] 프로토콜 뽀개볼까 (2) | Comparable

지난번에 이어서 프로토콜에 대해 자세히 살펴볼까합니다!  저번 글에서 설명한 Equatable이 동등성 비교(==, != 연산자 사용)를 위해 필요한 프로토콜 이라면Comparable은 =, > 연산자를 사용하여 대소를 비교하기 위해 필요한 프로토콜인데요!  일단 공부의 시작인 공식문서부터 볼까요     📍공식문서A type that can be compared using the relational operators =, and >.protocol Comparable : Equatable 정의를 보면 이 프로토콜을 채택함으로서 =, > 연산자를 쓸 수 있다고 하네요!   근데 Comparable은 Equatable을 채택하고 있네요..?그렇다... 우린 Comparable을 준수하는 타입을 만들면 자연..

Swift 2024.04.27

SwiftGen 사용기 | font, color, asset에 적용

개인 프로젝트 중 color를 namespace로 지정해 주려다가 좀 더 효율적이게 사용해 줄 수는 없을까 생각하다가 SwiftGen라는 도구를 찾았는데 보다 선언적인 프로그래밍을 할 수 있을 것 같아서 사용해 주게 되었다. 보통은 UIColor의 extension에 편의 생성자 만들어서 hex나 rgb를 컬러 활용할 수 있도록 해주고 열거형에 타입 프로퍼티(static let)를 사용하여 namespace로 지정해주곤한다. 아래처럼 말이다. extension UIColor { convenience init(hexCode: String, alpha: CGFloat = 1.0) { var hexFormatted: String = hexCode.trimmingCharacters(in: CharacterSet..

Swift 2024.03.03

[Swift] 클로저와 중첩함수의 캡처 현상 (1)

Swift에서 일급객체라고 불리는 클로저의 메모리는 어디에 저장되는지 알고 있나요? 그리고 외부 변수가 클로저 내부에서 사용될 시, 함수와는 다르게 어떤 현상이 일어나는지는 알고 있나요? 이번 글에서는 클로저나 중첩함수가 할당된 변수가 실행될 때 캡처 현상이 일어나는 상황과 이유에 대해 정리해 보려 합니다! 다음글에서는 캡처 현상 때문에 외부 요인에 의해 내부에서 사용되는 외부 값이 변경되는 것을 방지하기 위해 어떤 방법을 쓸 수 있는지 방법을 이야기해 볼게요 ㅎㅎ [Swift] 클로저와 중첩함수의 캡처 현상 (1) [Swift] 클로저와 중첩함수의 캡처 현상 (2) | 캡처리스트 클로저에서self키워드 # 🍑 클로저란 무엇이고 왜 사용할까? 클로저는 "이름이없는(익명) 함수"라고 하죠. Swift에서 ..

Swift 2023.11.01

[SwiftUI] Remote Notification 원격 알림 (1)

이전 글에서 로컬 알림 기능이 어떻게 구현되는지와 기기에 설정된 앱의 알림 기능을 확인하는 방법에 대해서 알아보았다면, 이번에는 푸시 서버로부터 사용자의 기기까지 어떻게 원격 알림이 전달되는지에 대한 전반적 개념을 알아보고자 한다. [SwiftUI] Remote Notification 원격 알림 (1) [SwiftUI] Remote Notification (2) FCM 서비스 사용하여 원격 알림 구현 알림 관련 이전 글 [SwiftUI] Local Notification 앱의 로컬알림 기능 구현 [SwiftUI] Notification | 알림설정확인 getNotificationSettings Provisional Authorization # 🥨 원격 알림은 왜 필요할까? 제한된 기능만 수행할 수 있는 ..

SwiftUI 2023.08.20

[SwiftUI] Local Notification 앱의 로컬알림 기능 구현

로컬 알림에 대해 이해하고 구현하기 위해서는 먼저 우리가 푸시 알림이라고 부르는 local notification과 remote notification의 차이점에 대해 알아볼 필요가 있다. remote notification는 서버 측에서 보내는 서버 푸시이며 기기 자체에서 앱으로 알림을 보내는 것은 local notification이다. 두 케이스는 각기 다르지만 local notification는 서버가 없어도 앱 자체만으로 해결이 가능하기 때문에 구현하기 비교적 간단하다. 이 글에서는 Local Notification을 구현하기 위한 과정을 각각 설명하고자 한다. #🥨 사용자로부터 푸시알림 사용 권한 요청 앱에서 알림 기능을 사용자에게 제공하기 위해서는 가장 먼저 사용자가 알림을 받고 싶은지의 여부..

SwiftUI 2023.07.17

[SwiftUI] @StateObject 와 @ObservedObject

MVVM 아키텍처를 사용해서 앱을 구현했을 때 view model을 구독할 수 있는 property wrapper인 @StateObject 와 @ObservedObject 사이에서 헷갈렸던 적이 많이 있었기 때문에 둘 사이의 공통점과 차이점에 대해 기록하고자 한다. # 🥨 Property Wrapper 우선, @StateObject 와 @ObservedObject 는 구독하고 있는 객체의 변경에 반응해서 화면을 업데이트할 수 있게 해주는 SwiftUI의 프로퍼티 래퍼이다. 두 프로퍼티 래퍼 모두 ObservableObject 프로토콜을 채택한 객체를 필요로 한다. 예를 들어 MVVM 아키텍처로 앱을 구현한다고 했을 때 ViewModel 프로퍼티의 변화를 View에 반영해주고 싶다면 ViewModel을 정..

SwiftUI 2023.06.21

[SwiftUI] UIViewControllerRepresentable프로토콜로 갤러리에서 이미지 선택하기

UIKit의 view controller인 UIImagePickerController를 사용함으로써 SwiftUI에서 사진을 선택할 수 있는 기능을 구현할 수 있다 # 🥨 UIView와 UIViewController - UIView : An object that manages the content for a rectangular area on the screen. UiView는 공식문서에서 말하는 것처럼 화면의 사각형 영역에 대한 내용을 관리하는 객체이다. 우리가 사용하는 UILabel, UIButton, UITextField 등 UI컴포넌트 들의 부모클래스가 UIView인 것이다. https://developer.apple.com/documentation/uikit/uiview UIView | Appl..

SwiftUI 2023.06.20

SwiftUI 공통 스타일 주기 Custom View Modifier

재사용되는 SwiftUI 코드를 Custom View Modifier로 만들어주기 UI를 만들다보면 재사용되는 스타일이 생기기 마련이다. 이 경우에 같은 코드를 반복해서 사용하면 매우 길고 가독성이 낮은 코드가 되기 때문에 이러한 상황에서 유용하게 사용할 수 있는 Custom View Modifier를 활용해서 코드를 가독성있게 만들어주었다. 🥨 1. 단순한 Custom View Modifier 만들어주기 1) 우선 나는 다양한 Custom View Modifier를 만들기 위해 폴더를 생성해주고 그 아래에 각각 관련된 Modifier를 작성할 파일을 나누어주었다. 2) 우선 내가 가장 자주 사용한 스타일에 대한 구조체는 이렇게 작성해주었다 import Foundation import SwiftUI st..

SwiftUI 2023.06.01

SwiftUI 새로운 컬러 추가하는 법

자주 쓰이는 컬러를 쉽게 사용할 수 있도록 코드를 설정해주었다 Color 익스텐션을 통해 Hex코드를 활용해서 값을 추출해내는 생성자를 직접 만들어줄수도 있지만 나는 간단히 Asset에 등록하는 방법으로 설정해주었다. 🥨 1. asset파일에 컬러 등록 1) Asset을 관리하는 폴더에 Colors.xcassets 파일을 만들어준다. 2) 우측마우스 클릭하여 New Color Set을 클릭해준다. 3) 컬러의 이름을 지정해주고 Inspector 창을 열어준다. 4) Any Apprearance 혹은 Dark 를 클릭하면 우리가 원하는 컬러를 지정할 수 있게 된다. 나는 Hex 코드 형태로 컬러를 지정하고 싶었기 때문에 input method를 8-bit Hexadecimal 로 선택해주었다. 5) 원하는..

SwiftUI 2023.06.01