iOS/Swift 소식을 전해드립니다 💁 레츠스위프트 뉴스레터 제19호 2020년 11월 8일 ⌘ 애플 소식 애플이 올해 한다고 예고했던 것을 매달 이벤트로 쏟아내고 있습니다. 2020년 마지막 애플 이벤트 - One more thing으로 애플 실리콘 맥이 나올 것을 기대하고 있습니다. Big Sur RC 버전도 올라왔으니까요. 아참 애플이 이제 정식 배포 이전에 개발자들에게 배포되는 GM(Gold Master) 대신에 RC(Release Candidates)라는 표현을 쓰기 시작했습니다. 과연 이번주 수요일에 발표되는 첫 번째 애플 실리콘 맥은 무엇일까요? ⏳ 레츠스위프트 테크토크 레츠스위프트 2020 - 테크토크를 진행합니다. 11월 30일 월요일부터 12월 4일 금요일까지 일주일 매일 저녁에 진행할 예정입니다. 행사 진행을 도와주실 준비위원회 모집이 완료되서 다음주부터 준비를 시작합니다 :) > 일방적인 발표가 아니고, 테크토크에서 주제별로 함께 대화해주실 패널도 지원해주세요. >>> 패널 신청폼 (11월 15일 마감) > 일반 참가자 모집은 곧 공지하겠습니다. 🤹 스위프트 동시성 로드맵 요약 지난 2주동안 스위프트 포럼에서 가장 뜨거운 것은 바로 스위프트 동시성 로드맵이었습니다.자연스럽게 애플 코어팀에서 주도하고 있으며, 크리스 레트너가 거의 3년전에 작성한 선언문(manifesto)보다 작은 범위에 집중하고 있습니다. 코어 내부에서 꽤 구체적으로 구현 방향을 잡고 시작했다는 의미입니다. 당장은 방향성에 대한 문서와 테스트 코드부터 PR이 올라왔을 뿐입니다. 컨트리뷰터들이 댓글로 다양한 관점에서 꽤 깊이있는 제안을 주고 받고 있습니다. 이번 로드맵의 목표는 다음과 같습니다.
위의 작업은 두 단계로 진행될꺼라고 합니다. 우선 1단계에서는 async 문법과 actor 타입을 지원하도록 구현해서 코드를 개선할 수 있도록 합니다. 그 이후 2단계에서 데이터 레이싱 문제를 해결하기 위해서 actor 분리(isolation) 등 효율성을 개선한다고 하네요. 로드맵 문서상에는 for 반복문에서 병렬 처리처럼 2단계에서 해야할 것은 구체적으로 설명하지 않고 열어놓았습니다. 그래서 댓글에서 논의를 계속하다가 크리스 레트너가 지난 주말에 Protocol-based Actor Isolation 에 대한 제안 글을 올렸습니다. https://docs.google.com/document/d/1OMHZKWq2dego5mXQtWt1fm-yMca2qeOdCl8YlBG1uwg/edit# 이 부분은 추가적으로 논의가 될 것으로 보입니다. 기본 문법 아이디어 비동기로 동작하는 다음과 같은 함수를 예제 코드로 살펴보죠. 예제 코드에 refreshQueue가 포함된 것처럼, 이번 논의에서 제안한 동시성의 상당 부분은 GCD(libDispatch 오픈소스)와 관련이 있습니다. 직간접적으로 동시성 코드가 DispatchQueue를 활용한다고 가정하고 있습니다. 여기서 refreshPlayers() 함수는 self.players에 값을 넣기 위한 refreshQueue에 async로 넘긴 비동기 함수이며, 끝난 시점을 알기 위해서 completion 핸들러를 호출합니다. 이런 비동기 함수를 앞으로는 이렇게 쓰고 싶다는 겁니다. 아래처럼 작성하면 위와 같은 코드로 동작하게 된다는 겁니다.
여기에 덧붙여서 class PlayerRefreshController가 private queue를 가지면서 내부 속성을 해당 큐에서만 접근하도록 하기 위해서 actor 클래스를 제안합니다.
DispatchQueue.main에서 UI를 처리해야 하는 경우는 actor 중에서 특별한 UIActor가 처리하도록 지정할 수도 있습니다. 이렇게 선언하면 컴파일러가 확인해서, 이 클래스를 참조해서 호출하는 경우는 글로벌 UI Actor로 메인 스레드에서 동작하게 됩니다. 이와 관련된 보다 자세한 설명은 제가 작성한 스위프트 동시성 로드맵 블로그를 읽어보세요. 🇰🇷 국내 소식들 아쉽게도 이번주에도 국내 소식이 부족했습니다. 뉴스레터 저장소에 개인 블로그, 회사 기술블로그 등 한글 자료를 언제든지 댓글로 남겨주셔도 됩니다. ✈️ 해외 소식들 해외 소식들을 비슷한 주제들이 많아서, 다음과 같이 묶어서 정리합니다. # 설계 구조 : 패턴 # 뷰 프로그래밍 : SwiftUI SwiftUI 자료는 여전히 많고, 다양한 관심을 보여주고 있습니다. # 프레임워크 이런 저런 프레임워크를 다루는 예제를 소개하는 글들입니다. # 기타 나머지는 테스트와 유지보수, 오픈소스와 관련된 기타 소식들을 모아뒀습니다. 📲회사에서 iOS 개발자들에게 홍보하고 싶은 내용이 있으신가요? news@letswift.kr 로 언제든지 문의해주세요. |