728x90

분류 전체보기 289

Swift bugs are moving to GitHub Issues

안녕하세요. Swift 오픈 프로젝트의 이슈들이 기존에는 JIRA에 위치하고 있었는데, 개발자들의 더 좋은 참여 환경을 위해서 Github로 옮기고 있다고 해요! JIRA 이슈는 Github apple/swift repository 이슈로 복사가 될 예정이고 언젠가 기존 bugs.swift.org는 Github issue로 리다이렉트 될 것이라고 해요!! ## 참고 - https://forums.swift.org/t/swift-bugs-are-moving-to-github-issues-and-we-need-your-help/56125 Swift bugs are moving to GitHub Issues and we need your help! Swift bugs are moving to GitHub Is..

News 2022.03.26

FormatStyle

안녕하세요. 이번에는 iOS 15에 추가된 FormatStyle에 대해 간단하게 알아보고, Custom FormatStyle 만드는 방법도 같이 알아볼게요. FormatStyle은 iOS 15에 추가된 프로토콜입니다. 기본으로 제공되는 style도 되게 여러 종류가 있어요. (number, percent, timeDuration 등) ## 1. 기본 사용법 formatted() method를 사용하면 value -> string으로 변환되어서 출력되며, 자동으로 localization까지 지원해줍니다. Date(timeIntervalSinceReferenceDate: 0).formatted()// "1/1/2001, 9:00 AM" Measurement(value: 20, unit: UnitDuratio..

Swift 2022.03.24

PersonNameComponents를 사용해서 이름 파싱하기

안녕하세요. 이번에는 이름을 등록하면 알아서 파싱이 되는 PersonNameComponents에 대해 알아볼게요. 보통 이름을 파싱 하고 싶다면, 문자열을 split(separator:) method를 사용해서 파싱 하는 방법을 가장 쉽게 떠올릴 수 있습니다. 하지만, 우리의 갓플은 PersonNameComponents라는 구조체를 제공해주고 있었어요...ㅎ 요게 편리한 기능들을 이것저것 가지고 있더라구요??ㅎㅎㅎ... 그래서 한번 알아보려고 합니다. ## 1. PersonNameComponents 사용법 PersonNameComponents는 아래처럼 사용할 수 있어요. let name = "John Lennon" var nameComponents = try PersonNameComponents(nam..

Swift 2022.03.23

Image 비동기 로딩 API (UIKit)

안녕하세요. 이번에는 UIKit에서 이미지를 비동기로 로딩할 수 있는 API들에 대해 소개해보려고 합니다. 보통 UICollectionView, UITableView에서 스크롤을 하면, 이미지 로딩 때문에 조금씩 끊기는 현상을 볼 수 있어요. 그 원인은 첫째, 이미지 로딩할 때 디코딩이 필요한데 디코딩 작업이 메모리를 많이 사용하기 때문이에요. 둘째, 이미지 디코딩은 main thread에서 작업을 해야 하고 화면에 출력될 때 디코딩하는 lazy 한 방식을 사용하기 때문이에요. 물론, background에서 로딩, 디코딩할 수 있는 API가 있지만 워낙 low-level의 API이고 메모리 관리를 직접 해줘야 하는 불편함이 있어서 쉬운 작업은 아니에요...ㅠㅠㅠ 그런데!! iOS 15부터 훨씬 쉽게 ba..

UIKit 2022.03.23

mailto scheme과 기본 메일 앱 설정

안녕하세요. 이번에는 mailto scheme으로 아이폰 Mail 앱이 아닌 타사 Mail 앱을 여는 방법에 대해 알아볼게요. 기존의 MFMailComposeViewController를 사용하면 iPhone 기본 앱인 Mail 앱을 열고 메일을 작성할 수 있었어요. 근데 문제가 하나 있는게.. "나는 Mail 앱 대신 Gmail을 위주로 사용해서 Mail 앱에 로그인이 안되어 있어ㅠㅠ" 하는 경우도 있었겠죠?? 예전 같은 경우에는 Mail 앱에 로그인이 되어 있지 않을 경우에는 MFMailComposeViewController에서 에러가 발생했어요ㅠㅠ 또한 Gmail, Outlook 같은 타사 앱을 사용할 수도 없었죠.. 그런데 iOS 14부턴 이러한 문제가 해결되었답니다!! iOS 14부터는 기본 메일..

iOS 2022.03.23

__printChanges

안녕하세요. 이번에는 SwiftUI의 __printChanges에 대해 알아볼게요. __printChanges는 Xcode 13부터 사용할 수 있는 method인데요, SwiftUI의 body가 다시 그려질 때(상태 값이 변경될 때), 뷰의 프로퍼티가 어떤 값으로 변하는지 콘솔에 출력해주는 method입니다. 사용법은 아주 간단해요ㅎㅎㅎ 뷰 body 안에 아래 코드를 추가해주면 끝입니다. Self._printChanges() 직접 확인해볼까요?? struct ContentView: View { @State private var isShow = false @State private var isOn = true @State private var speed = 50.0 @State private var isE..

SwiftUI 2022.03.23

Xcode 13.3에서 Swift 프로젝트 빌드 속도를 더 빠르게

안녕하세요. 최근에 Xcode 13.3이 배포되었는데요, 빌드 시스템에 빌드 속도를 높일 수 있는 새로운 기능이 추가되어서 소개해보려고 합니다. Xcode 13.3 Release Note를 보면 아래 명령어로 옵션을 활성화시키면 Swift 프로젝트의 빌드 속도가 빨라진다고 해요. defaults write com.apple.dt.XCBuild EnableSwiftBuildSystemIntegration 1 Swift 프로젝트에서 위의 옵션을 비활성화/활성화시킨 후에 비교해봤어요. 옵션 비활성화 옵션 활성화 확실히 옵션을 활성화 시켰을 때 시간이 35초 -> 15초로 단축이 된 것을 볼 수 있었습니다ㅎㅎㅎ Xcode에서 빌드에 걸린 시간 확인 방법은 아래 글을 참고해주세요! Xcode에서 빌드에 걸린 시간..

Xcode 2022.03.21

Swift 5.6 공식 배포

2022/03/14에 Xcode 13.3이 공식 배포됨에 따라, Swift 5.6도 배포가 되었습니다. 아래 글 본문에 Swift 5.6 신규 기능들에 대해 설명이 되어 있구요 https://www.swift.org/blog/swift-5.6-released/ Swift 5.6 Released! Swift 5.6 is now officially released! www.swift.org 제가 따로 정리한 글도 있으니 참고해주세요!! Swift 5.6 추가된 기능들 Swift 5.6 추가된 기능들 안녕하세요. 이번에는 Swift 5.6에 새롭게 추가된 기능들에 대해 알아볼게요. Swift 5.6은 현재 베타 버전으로 올라온 Xcode 13.3에서 사용 가능하니 참고 부탁드려요. # 1. any 키워드 SE..

News 2022.03.20

SceneStorage

안녕하세요. 이번에는 SwiftUI의 SceneStorage에 대해 알아볼게요. # 1. Overview SceneStorage는 Scene 고유 저장소에 읽고 쓰고 할 수 있는 프로퍼티 래퍼입니다. 상태를 복구하고 싶을 때, SceneStorage를 사용합니다. State와 유사하지만, SceneStorage는 동일 Scene에서는 그 값을 공유합니다. 다른 Scene들 간에는 SceneStorage 데이터는 공유되지 않습니다. 주의할 점이 있는데요, SceneStorage를 관리하는 시스템은 언제 어떻게 데이터를 지속시킬 건지 보장해주지 않아요. 그리고 SceneStorage에 저장할 데이터가 무거울 경우(ex. model data) 성능에 안 좋을 수 있으니 가벼운 데이터만 사용해주세요. 또한, S..

SwiftUI 2022.03.20