본문 바로가기

swift3

@MainActor, @globalActor 조금 더 이해하기 @MainActor, @globalActor 는 결국 actor의 종류이다. 우선 actor를 왜 쓸까? 비동기적인 상황에서 concurrency를 보장해주기 위해서 사용하는 것이다. @MainActor의 경우, 진행되는 동작을 Main thread로 보내고, thread safe하게 동작함을 보장한다. (DispatchQueue.main의 역할과 비슷) @MainActor와 동일한 이유로, @globalActor 역시, 해당 globalActor를 사용하게 되면 background에서 진행되는 동작들의 concurrency를 보장하고 해당 @globalActor를 전역변수로 만들어 @MainActor를 사용할 때와 동일하게 어떤 상황에서도 사용하기 쉽게 만드는 것이다. 'MainActor.run'이 사.. 2022. 12. 23.
Sendable 프로토콜에 대해! 2023.10.04 1차 수정 프로토콜 중 하나인 Sendable! 써져있는 그대로 Sendable하다는 것이다. 두괄식으로 말하자면! 비동기상황에서 값을 전달할때, 전달하는 값이 thread safe해서 변경될 여지가 없다고 보장하는 표시이다! 그럼 어떤 상황에서 Sendable을 명시적으로 적어줘야 할까? 간단한 예시와 알아보자! actor CurrentUserManager { func updateDataBase(userInfo: String) { } } class SendableViewModel: ObservableObject { let manager = CurrentUserManager() func updateCurrentUserInfo() async { await manager.updateDat.. 2022. 12. 20.
Collection이 뭔가요?(Array, Dictionary, Set) Collection이란, 영어를 그대로 한국어로 번역한다면, '모아둔 것' 이라고 볼 수 있습니다. 그럼 아마 Collection이란 모아둔 어떤 것에 대한 이야기일 겁니다! 그리고 그 Collection은 Array, Dictionary, Set..등등의 모습으로 swift에서 존재합니다. 사실, Swift를 공부하는 사람들의 경우에는 대부분이 이미 다른 언어를 첫번째 언어로 공부하고 시작하는 비율이 많을 것 같기 때문에, Collection이라 불리는 Array, Dictionary, Set에 대해서 어느 정도 알고 있을 것입니다. 그러면..! 저는 내 머리 속의 정보들을 정리하기 위해서 글을 작성해 보겠습니다! 1. Array 말 그대로 배열입니다. var array1:[Int] = [] var a.. 2022. 5. 19.