728x90

분류 전체보기 290

Modeling errors

안녕하세요. 이번에는 Swift에서 throw-catch 키워드를 사용한 Error 처리 방식을 개선할 수 있는 3가지 관점에 대해서 소개해보려고 합니다. 우선 아래 코드를 볼까요? actor InMemoryCache { enum ErrorKind: Error { case noValue(Key) case outOfMemory(availableBytes: Int) } private var memoryLimit: Int init(memoryLimit: Int) { self.memoryLimit = memoryLimit } func get(for key: Key) throws -> Value { guard contains(key: key) else { throw ErrorKind.noValue(key) } /..

Swift 2022.05.27

Github PR 템플릿 생성 방법

안녕하세요. Github PR을 생성할 때 템플릿을 설정할 수가 있더라구요?!!! 저처럼 몰랐던 분들을 위해서... 설정 방법에 대해서 소개해보려고 합니다. 템플릿을 사용하려면 우선 템플릿을 만들어야겠죠? 템플릿을 사용하는 방법은 크게 2가지로 나뉘어집니다. 단일 템플릿 멀티 템플릿 즉, 템플릿을 1개만 사용할 것이냐, 여러 개 사용할 것이냐 이죠. 사용 방법에 따라서 템플릿 파일 생성 규칙이 살짝 달라집니다. ## 1. 단일 템플릿 생성 root directory에 pull_request_template.md 파일을 만들거나 docs라는 directory에 pull_request_template.md 파일을 만들거나 (템플릿을 숨기고 싶은 경우) .github directory 안에 pull_reque..

기타 2022.05.22

클로저에서 [weak self] 사용할 때 주의할 점3

안녕하세요. [weak self] 관해서 얘기가 좀 많은가 봐요..허헣... 아래 글에서 [weak self] 관련한 얘기들을 다뤄봤는데요, 클로저에서 [weak self] 사용할 때 주의할 점 클로저에서 [weak self] 사용할 때 주의할 점 안녕하세요. 클로저 안에서 [weak self]를 쓰는 Swift 코드를 적지 않게 볼 수 있어요. 그 이유는 메모리 누수(memory leak)를 막기 위해서인데요, 만약, 클로저 안에서 [weak self]와 함께 guard-let 구문을 사 phillip5094.tistory.com 클로저에서 [weak self] 사용할 때 주의할 점2 클로저에서 [weak self] 사용할 때 주의할 점2 안녕하세요. 저번 글에서 [weak self]를 쓸 때 주의할 ..

Swift 2022.05.21

SwiftUI <-> UIKit 이벤트 전달 방법

안녕하세요. UIKit에서 SwiftUI, 그리고 SwiftUI에서 UIKit로 이벤트를 전달하는 방법에 대해 알아볼게요. 전체 프로젝트는 여기에 업로드해두었으니 참고해주세요! 먼저, SwiftUI에서 UIKit으로 이벤트를 전달하는 코드를 직접 구현해보고 그 반대도 가볍게 알아볼게요ㅎㅎ 이벤트를 전달하는 방법에는 크게(그리고 가장 유명한..) 3가지 방법이 있을 것 같아요. Combine, ObservableObject Closure Notification 3가지 방법을 각각 사용해서, 아래 같은 화면(SwiftUI Button을 클릭해서 count를 증가시키고 UIKit Label의 text에는 count 값이 반영되는)을 만들어보는 연습을 해볼게요. # 1. SwifftUI -> UIKit으로 이벤..

iOS 2022.05.21

타사 앱 스토어 비중(feat. DMA)

DMA(Digital Markets Act)로 인해, 애플은 iOS에서 AppStore가 아닌 타사 앱 스토어를 허용해야 할 가능성이 생겼습니다. Under the DMA, Apple will be required to allow consumers to install apps by ” sideload », that is to say without going through an application store, and Apple will therefore have to authorize the installation of another application store. (출처: https://gettotext.com/dma-the-end-of-the-app-store-monopoly-on-iphone-in..

News 2022.05.15

App Store 개선 절차의 명확한 기준 및 새로운 기간 연장

AppStore 환경 개선을 위해 관리되지 않는 앱들은 제거되고 있다고 합니다. 이렇게 앱을 제거할 경우, 아래와 같은 장점이 있어요. - AppStore에서 내가 원하는 앱을 찾기 더욱 쉬워짐. - 정기적인 업데이트를 촉구함으로써, 앱에 최신 보안 기술을 사용하도록 하여 보안 및 앱 사용자들의 개인정보를 보호함. - 최신 화면, SDK, 최신 기능을 준수하도록 하여, 앱에 대한 사용자 경험을 개선함. AppStore에서 제거되는 앱의 기준은 아래와 같습니다. - 3년 동안 업데이트되지 않았고, 최소 다운로드 임계값을 충족하지 못한 앱 - 여기서 최소 다운로드 임계값이란, 12개월 동안 앱이 전혀 다운로드되지 않았거나 매우 적은 횟수로 다운로드된 경우) 당연히(?) 제거될 앱의 기준을 충족했다고 해서 곧..

News 2022.05.14

SwiftUI에서 ViewController를?

안녕하세요. SwiftUI를 써보셨나요? SwiftUI를 쓰다 보면... UIKit에서 자주 사용하던 MVC 패턴을 사용하고 싶다는 생각이 들 때가 있습니다. 물론 SwiftUI에서 MVC 패턴을 사용 못한다는 것은 아니에요. 그런데 막상 SwiftUI에서 MVC 패턴을?? 어떻게???라는 의문점이 들더라구요. 그래서 이번 글에서는 SwiftUI에서 MVVM 패턴에 얽매이지 않고 ViewController라는 개념을 적용해보는 시간을 가져볼게요. # 1. SwiftUI에서의 ViewModel 이런 화면을 ViewModel을 사용해서 만든다고 가정해볼게요. (cow 모듈은 여기를 참고해주세요!) import SwiftUI import cows struct ContentView: View { var body..

SwiftUI 2022.05.11

복잡한 Navigation Flow 처리 (feat. Combine)

안녕하세요. 이번에는 SwiftUI에서 복잡한 Navigation Flow를 처리하기 좋은 방법(구조?)에 대해 소개한 글이 있어서, 아래 글을 토대로 공부해볼게요. - https://betterprogramming.pub/flow-navigation-with-swiftui-revisited-791f89421923 Flow Navigation With SwiftUI (Revisited) How to implement navigation effectively in your code bases betterprogramming.pub 전체 코드는 이곳을 참고해주세요! # 1. Navigation Flow를 처리할 때 고려해야 할 규칙들 아름다운 구조와 코드를 만들기 위해서 몇 가지 고려해주면 좋습니다. [규칙..

SwiftUI 2022.05.10

건담 키캡 제작기

안녕하세요. 최근에 (광기에 사로잡혀서) 만든 건담 키캡에 대한 제작기를 공유드리려고 합니다. 저는 키보드질 뿐만 아니라 건담 프라모델에도 취미를 가지고 있습니다. 건담 프라모델을 좋아하는 이유는 만드는 손맛도 있지만 다 만들어진 건담을 볼 때 멋있다고 느껴져서입니다. 그리고 개인적으로 '멋있음'의 90%는 건담 머리(일명 대x리)에 있다고 생각하고 있습니다. (이때 저한테 뭔가 잘못됨을 느꼈어야 했는데.......) 그러다 보니 자연스럽게(?) 건담 대x리를 키캡에 접목시키면 '멋있는 키캡이 되겠지' 라는 생각을 가지게 되었습니다. 떼샷이면 더욱더..... 저는 곧바로 국내 중고매물을 싹 뒤져서 1달간 약 20개의 가조립 MG(1:100 사이즈) 건담들을 구했습니다. 작업을 위한 참수형... 근데 예상..

취미 2022.05.07

MotionScape

안녕하세요. 이번에는 MotionScape라는 앱에 대해서 소개해보려고 합니다. SwiftUI에는 여러 가지 애니메이션 옵션이 있습니다. easnIn(duration:) 같은 수식어는 워낙 명확하다 보니... 파라미터가 무엇을 의미하는지 바로 알 수 있고, 그에 따른 기대 동작도 어느 정도 예상이 가능한데요, interpolationSpring(mass:stiffnetss:damping:initialVelocity:) 같은 수식어는 파라미터가 어떤 설정인지 살펴봐야하고, 기대 동작이 쉽게 예상되지 않더라구요... (저만 그런가요...;;; 🥺 ) 애니메이션 파라미터에 어떤 값을 넣냐에 따라서 간단한 샘플 애니메이션을 봤으면... 했는데 마침 그런 앱이 출시되었습니다. MotionScape라는 앱이에요! ..

SwiftUI 2022.05.06