본문 바로가기
반응형

SWIFT41

Swift 5.7 변경사항 외 한 주간의 애플 소식들 업데이트 소식iOS 16 release candidate developer betawatchOS 9 release candidate developer betatvOS 16 release candidate developer betamacOS Ventura developer beta 7iOS 15.7 beta: iOS 16 이전의 마지막 버전일 것으로 유추애플은 차근차근 iOS 15에서 iOS 16 라인으로, macOS Monterey에서 macOS Ventura로 옮겨갈 준비를 하고 있다. 참고로 rc(release candidate) 버전은 베타 테스트 버전이긴 하지만 이대로 큰 문제가 없으면 그대로 릴리즈가 될 후보(candidate) 버전이라는 의미다. 대부분의 rc는 그대로 정식 버전이 되는 경향이.. 2022. 9. 11.
웹킷 소식 외 한 주간의 애플 소식들 소프트웨어 업데이트iOS 16 developer beta 8iOS 12.5.6: 구형 디바이스 보안 버그 수정9월 행사가 코앞이라 베타도 거의 막바지가 아닐까 예상된다.WebKit의 새 집WebKit이 GitHub으로 이사 감이라는 소식을 받았다. 개인적으론 좋은 소식이라 생각하는데, 아무래도 GitHub이 대중적이고 Git이 현재 VCS 중에선 가장 인기가 좋다고 생각하기 때문이다. 덕분에 사파리도 더 빠른 발전이 될 것 같다는 기대도 든다.AnyLayout으로 부드러운 화면 전환 구현하기iOS 16의 SwiftUI에 추가된 AnyLayout을 이용해 레이아웃 간 트랜지션을 구현하는 방법을 설명하는 글이다. 이전에는 불가능한 트랜지션이 가능해지기 때문에 미려한 화면 전환 애니메이션을 구현해야 한다면 꼭.. 2022. 9. 4.
베타 업데이트 소식 외 한 주간의 애플 소식들 업데이트 소식이번에는 공식적인 소프트웨어 업데이트가 하나 있다.Bootcamp 6.1.16차기 OS에 대한 베타 테스트 버전도 준비되고 있다.macOS Ventura developer beta 6, public beta 4iOS 16 developer beta 7, public beta 5iPadOS 16 developer beta 7, public beta 5tvOS 16 developer beta 7, public beta 5watchOS 16 developer beta 7, public beta 5차기 OS의 첫 마이너 업데이트도 일부 준비 중인 모양이다.iOS 16.1 developer beta, public betaiPadOS 16.1 developer beta, public beta이외의 업데.. 2022. 8. 28.
한 주 간의 약간(?)의 애플 소식들 엔지니어 시점에서 지난 한 주간의 애플 관련 소식을 모으는 글이지만 양이 별로 없는 것 같다.소프트웨어 업데이트macOS 12.5.1, iOS 15.6.1, iPadOS 15.6.1 업데이트Safari 15.6.1 for macOS Big Sur and macOS Catalina: 구형 OS의 위와 동일한 보안 버그 수정 추정iOS 16 Develpoer Beta 6, Public Beta 4iPadOS 16 Developer Beta 6, Public Beta 4watchOS 9 Developer Beta 6, Public Beta 4tvOS 16 Developer Beta 6, Public Beta 4Custom Layout in SwiftUISwiftUI에는 HStack, VStack, Grid와 .. 2022. 8. 21.
카플레이 주목 등 한 주간의 애플 소식 지난 한 주간 개인적으로 신경이 쓰이는 애플 기술 소식을 모아봤다.카플레이 기대주?주관적인 판단은 아니지만 WWDC22에서 발표된 카플레이(CarPlay)에 주목하는 블로그다. 물론 판단 근거는 있겠지만, 그전에 한국에서 애플맵을 쓸 모 있게 만드는 일이 우선시되지 않으면 한국에서는 일부 기능만 쓸 수 있는 "빛 좋은 개살구" 정도밖에 안 될 것 같다. 그러니 팀쿡 화이팅! 블로그 | '카플레이'가 WWDC 2022의 최고 기대작인 이유WWDC 2022에서 애플은 아이폰 소프트웨어의 차기 버전인 iOS 16을 공개하고 시연했다. 잠금화면이 파격적으로 개선되고 메시지 편집 및 전송 취소 기능이 오랜 기다림 끝에 도입됐다. 이외에도 여러www.ciokorea.comM1 vs M2개인적으로 하드웨어 지식이 부.. 2022. 6. 19.
WWDC 버프(?)가 가득한 애플 소식 WWDC22가 성황리에 진행되면서 이 행사 버프가 잔뜩 묻은 소식이 넘쳐났는데 그중 개인적으로 의미를 두는 소식만 몇 가지 모아봤다.WeatherKit애플에서 공식적으로 날씨 관련 프레임워크를 추가한 듯 하다. 이제 날씨를 알기 위해 굳이 크롤링을 만들지 않아도 된다는 것일까? WeatherKit - Apple DeveloperWeatherKit brings valuable weather information to your apps and services through a wide range of data that can help people stay up to date, safe, and prepared.developer.apple.com패스키오랜만에 애플이 표준 행보에 가세했다. FIDO 인증을 지원.. 2022. 6. 12.
Xcode Playground에서 Swift Package 이용하기 요즘처럼 외부 패키지를 쓸 일이 많은 상황에서 Xcode Playground는 큰 제약 사항이 있다. 외부 패키지를 import 해서 바로 쓸 수 없다는 문제다.물론 그렇다고 아예 방법이 없는 것은 아니다. 아예 별도의 프로젝트를 하나 생성해서 여기에 Playground 및 패키지를 추가해서 쓰는 방법이 있다. 이미 답은 적었지만 아래에 조금 더 자세히 절차를 나열한다.별도의 프로젝트 생성원하는 플랫폼의 원하는 방식으로 프로젝트를 생성한다. 아래 스크린샷은 macOS App 프로젝트를 생성하는 화면이다.Playground 추가이제 생성한 프로젝트에 플레이그라운드를 추가해주자. 위치는 아무 곳이나 상관없고 New File 메뉴를 이용해 생성하면 된다.타입이 워낙 많아서 위처럼 검색해서 추가하는 편이 빠르다.. 2022. 4. 17.
Swift에 어울리는 Objective-C 코드 작성하기 이 글은 Swift 호환성이 좋은 Objective-C 코드를 작성하는 방법에 관한 내용이다. Swift라는 언어가 워낙 쓰기 편하게 나와서 이제는 과연 얼마나 Objective-C 코드가 쓰일까 알 수 없는 요즘이다. 그래도 개인적으로는 쓸 수밖에 없는 상황이기도 하고 아직 쓰이는 곳이 분명 있으리라는 믿음으로 이런 글을 쓰게 되었다.참고로 이 글의 핵심 키워드는 아마도 NS_SWIFT_NAME인 것 같다.C 함수 별명Objective-C 코드로 작성한 C 함수의 인터페이스는 Swift 측에서 보면 좀 답답할 수도 있다. 예를 들어 아래 함수가 있다고 치자.int SuperGoodAdditionFeature(int a, int b){ return a + b;}이 함수를 Swift에서 접근하려면 아.. 2022. 3. 6.
SwiftUI로 액션시트 띄우기 (iOS 15, macOS Monterey) 앞서 작성한 경고창을 띄우는 방법이 최신 SDK에서 변경된 점이 있었던 것과 비슷하게 액션시트(ActionSheet)도 최신 SDK에서 조금 바뀌었다. 그래서 바뀐 내용으로 사용법을 간략히 작성해본다. 당연하게도 Xcode 13 이상의 버전에서 개발해야 하며 iOS 15 혹은 macOS Monterey 등에서만 동작하는 내용이다.기본 예제iOS 14까지만 해도 .actionSheet(...) 식의 코드가 있었다. 그런데 이게 최신 SDK에서는 낡음(deprecated) 처리가 되었고 대신 .confirmationDialog(...)를 사용할 수 있게 된다.아래는 바뀐 코드 예제다.struct ContentView: View { @State private var showingActionSheet = .. 2021. 10. 12.
SwiftUI에서 경고창(Alert Dialog) 띄우기(iOS 15, macOS Monterey) iOS 15와 macOS Monterey에서 구현할 수 있는 SwiftUI용 경고창(Alert Dialog)을 띄우는 방법이 새로 추가되었다. 새 방법이 아무래도 코드가 더 간결한 것 같아서 정리해본다.가장 기본적인 경고창 예제가장 기본적으로 제목과 메시지 그리고 확인 버튼 하나가 있는 경고창을 띄우는 예제 코드는 아래와 같은 식이다.struct ContentView: View { @State private var showingAlert = false var body: some View { Button("Show Alert") { showingAlert = true } .alert("Alert Title", isPresented: $sh.. 2021. 10. 8.
SwiftUI에서 각 플랫폼의 배경색 사용하기 SwiftUI에서 색상을 지정하기 위해서는 Color라는 구조체를 사용한다. 여기에는 당연히 RGB 값을 넣어서 마음대로 색상을 만들 수 있지만 특별히 정해진 색상을 별도의 이름으로 정의해 두기도 했다. 예를 들자면 accentColor나 primary 혹은 secondary와 같은 일반적인 용도의 플랫폼 별 색상을 쉽게 사용할 수 있다.그런데 모든 색상이 제공되는 것은 아니다. 예를 들어 윈도우의 배경색 종류가 몇 가지 있는데 이를 SwiftUI에서는 제공해 주지 않는다. 이를 위해서는 해당 플랫폼용, 즉 iOS의 경우 UIKIT 그리고 macOS의 경우 AppKit을 이용해 해당 색상을 가져오도록 코드를 작성할 수 있다. 아래와 같은 식으로 말이다.public extension Color {#if o.. 2021. 10. 5.
Swift 5.5의 Continuation Swift 5.5의 동시성(Concurrency) 기능의 강화로 드디어 async와 await를 사용할 수 있게 되었다. 하지만 우리가 사용하게 될 기존의 프레임워크들은 여전히 이런 연속성 구현이 빠진 형태도 많을 것이고 레거시도 종종 사용하게 될 수도 있다.다행히도 Swift 5.5에서 이런 동시성 인터페이스를 제공하기 힘든 코드를 동시성 코드에 어울리게 쓸 수 있는 방법이 제공된다. 이름하야 연속성(Continuation)이라 불리는 방법이다. 개발자가 약간 고생해서 감싸는(wrapping) 코드를 작성해야 되겠지만 말이다.문제가 될 만한 예제예를 들어 아래와 같은 인터페이스의 함수를 사용해야 한다고 생각해보자.func fetchResults(name: String, completion: ([Stri.. 2021. 7. 16.
Swift 5.5의 async/await 살펴보기 Swift는 전통적(?)으로 GCD(Grand Central Dispatch)라 불리는 병렬 프로그래밍 패러다임을 제공해왔다. 하지만 이 방식은 GCD(Grand Central Dispatch)의 Dispatch Queue를 활용한 모델로 현재로 치자면 코딩하기가 귀찮은 좀 구식인 스타일이었다. 문법만 보면 사실상 Objective-C를 위한 기능이라고 생각될 정도였으니 말이다. 어쨌든 이를 개선하기 위한 여러 요구가 있어왔다. 그리고 드디어 Swift 5.5부터 새로운 비동기 프로그래밍 패턴으로 동시성(Concurrency) 개념이 지원되면서 (이제야) async와 await 키워드가 도입되었다. 내부에서는 여전히 GCD를 사용할 수는 있겠으나 표면적으로 이제는 동시성을 이용한다고 생각하면 될 것 같다.. 2021. 7. 13.
SwiftUI - self is immutable??? SwiftUI 프로그래밍 패러다임에 아직 익숙하지 않다 보니 삽질을 하면서 배우는 게 많은 것 같다. 이번 글의 주제는 제목처럼 가변적인 내(?)가 뭐가 문제인가 하는 내용이다.우선 간단한 예제를 보자. 아래의 예는 특정 SwiftUI 뷰 구조체인데 뷰가 표시될 때 타이머를 돌려서 주기적으로 뭔가를 하기 위한 코드이다.struct SomeView: View { var timer: Timer? = nil var body: some View { VStack { Text("Timer!") } .onAppear { // compile error timer = Timer() } }}위에서 .. 2021. 5. 18.
SwiftUI View Custom Initializer SwiftUI View 구조체는 자동으로 @Binding 프로퍼티를 초기화 매개변수로 지정하는 생성자를 만든다. 바인딩은 당연하게도 외부에서 값을 전달받아야 하는 프로퍼티이기 때문이다.그런데 이렇게 하나라도 바인딩 프로퍼티가 있으면 나만의 생성자를 작성하는 것에서 난관이 있을 수 있다.예를 보자. 아래는 CustomView 라는 View에 바인딩 프로퍼티가 하나 선언된 예다.struct CustomView: View { @Binding var name: String ...}앞서 이야기했다시피 바인딩 프로퍼티는 자동으로 생성자에 매개변수로 값을 전달받는 인터페이스를 가진다. 그래서 위의 뷰는 아래와 같은 형태로 인스턴스를 생성해서 사용해야 한다.struct ContentView: View { .. 2021. 5. 17.
앱스토어 업로드 시 ITMS-90034 문제 어느 날 앱 업데이트를 정리하고 업로드를 했다. 그런데 곧이어 아래와 같은 내용의 메일을 받게 되었다. 중요한 내용은 아래 한 줄이다. ITMS-90034: Missing or Invalid Signature - The bundle foo.bar at bundle path Foobar is not signed using an Apple submission certificate. Apple Submission Certificate라는 처음 듣는 인증서를 요구하는 듯한 오류다. 도대체 이 녀석은 뭘까? 해결 해결법은 아주 쉽다. 다시 빌드해서 올리면 된다. 다만 앞서 업로드된 바이너리와 동일한 빌드 번호를 쓰면 중복된 바이너리라며 업로드에 실패하니 빌드 번호를 증가시키거나 바꿔서 다시 시도해보자. 참 어이없.. 2021. 4. 9.
iOS 시뮬레이터의 이상한 노란색(?) 문제 Xcode 12.3을 설치한 이후 무슨 일이 있었는지는 모르겠는데 Title Bar나 Alert Popup 등의 배경색이 노랗게 보이는 문제가 발생하기 시작했다. 아래 스샷이 그 증거(?)다.전부 문제가 있는 것도 아니고 유독 저런 제목이나 팝업 배경 같은 - 아마도 이게 Tint Color였던가? - 것들만 노랗게 이상하게 표시되고 있었다. 무슨 오줌 액정 문제도 아니고 참 거슬린다. Accessibility에서 뭔가 설정되었나 찾아봐도 다 꺼져 있었다.이 문제는 시뮬레이터의 버그로 의심된다. 그리고 다행히도 수정이 가능했다.고치는 방법은 메뉴에서 File - GPU Selection - Prefer Integrated GPU를 선택한 후 시뮬레이터를 재시동한다. 참고로 원래 설정되어 있던 값은 Aut.. 2021. 1. 8.
SwiftUI에서 경고 팝업(Alert) 표시하기 SwiftUI에서는 경고 팝업(Alert Dialog)을 띄우는 방법이 좀 생소하다. 솔직히 말해서 좀 귀찮다. 어쨌든 방법을 찾았기에 글로 살짝 풀어서 정리해본다. 참고로 순수 SwiftUI 코드만 쓰기 때문에 모양은 좀 다르지만 macOS와 iOS 모두에서 동작한다.경고 팝업을 띄우기 위해서는 Alert 구조체를 이용한다. 아래는 Alert 인스턴스를 생성하는 예제다.Alert(title: Text("Alert"), message: Text("Alert Dialog"), dismissButton: .default(Text("Close")))상상대로라면 이 코드를 특정 View의 body에 넣으면 될 것 같다. 그런데 그게 잘 안 된다. 아래와 같은 오류가 나면서 말이다.Retur.. 2021. 1. 7.
728x90
반응형