Swift 6로 만들던 프로젝트를 업데이트한 후에 든 생각은 기존에 계속 업데이트하고 있는 앱인 나만의 프로젝트는 Swift 6로 업데이트를 심각하게 고민해봐야겠다것 이었습니다. 정말로 중요한 교훈일수도 있습니다. 신규로 만들고 있던 5xxx라인짜인 앱을 고치는데 Swift 6 스터디까지 합해서 몇주간이 걸렸습니다. 대부분의 시간은 클래스 구조를 다시 디자인하고 actor로 변경하는 것이었습니다. 또한 태스크 블록이나 비동기처리 관련 버그 처리에도 많은 시간이 걸렸습니다. 그렇다고 UI가 아닌 클래스가 메인쓰레드에서만 실행되게 하는건 어딘가 문제가 있어 보입니다. 나만의 프로젝트는 몇 만라인의 코드를 가지고 있고 이것을 바꾸고 테스트하는 시간은 상상이상일거 같습니다. 이 글을 보시는 분들도 신규 프로젝트가 아니고 몇 만라인의 프로젝트라면 Swift 6으로 변경하는 것은 깊은 고민을 하고 도전하는 것을 추천드립니다.
Swift 6에서 데이터 경합 관련 문제를 프로그래머가 보장한다고 컴파일러에게 말하려면 class를 @unchecked Sendable로 상속받게하면 됩니다. 하지만 공식적으로 해당 키워드는 사용하지 않을 것을 권장합니다. 솔직히 서버 만들때처럼 직접 쓰레드와 락을 디자인 하는 경우라면 사용하겠는데 iOS 내부적인 멀티 쓰레드 런타임에 의해서 실행되는 경우라 데이터 경합 관련 문제를 보장하기 힘들다고 생각해서 해당 키워드는 사용하지 않았습니다. 또한 앞으로 내부 런타임이 어떻게 변경될지 모르기 때문에 사용하지 않는 편이 좋다고 생각합니다.
Swift 6을 신규 앱에 적용하면서 느낀 것은 내부적인 실행은 정말 많이 변경된거 같다는 점입니다. 하지만 Swift 6의 비동기성이 완전히 기존 Swift와 매끄럽게 연동된다는 생각은 들지 않았습니다. 하지만 이런저런 방법으로 기존 Swift 라이브러리와 연동할 수 있게 만들어 놓았다는 생각이 들었습니다. 어떻게든 되긴 된다는 점입니다. 하지만 때때로 적용하다보면 해당 방법을 찾고 고민하는 것은 꽤나 고통스럽습니다. 특히 sort와 같은 경우 별도로 비동기 sort를 만들어야 된다는 점은 아쉽게 느껴졌습니다.
Swift 6를 그럼에도 불구하고 사용해야 할 장점이 있다면 이게 내부적으로 멀티쓰레드를 사용해서 잘만들어만 놓으면 쉽게 멀티쓰레드의 이점을 이용할 수 있다는 점입니다. 실제로 현재 만들고 있는 앱의 저장 부분이 자체적인 저장 파일 구조를 가지고 있어서 성능에 걸리는 부분이 있었는데 해당 부분을 아주 쉽게 멀티쓰레드로 만들 수 있어 고민을 어느정도 해결할 수 있었습니다. 쉽게 말하여 멀티쓰레드로 돌리는데 Swift 6 구조에만 맞게 작성하면 고민할게 하나도 없다는 점이 정말 큰 장점입니다.
Swift 6이 멀티쓰레드라서 아마도 iOS의 멀티프로세스를 최대로 활용할 수 있을거 같다는 점이 또 하나의 장점입니다. 멀티쓰레드를 요구하는 속도를 요구하는 작업에는 앱의 성능을 꽤 올려줄거 같습니다. 고로 신규 앱을 만들때는 어느정도 Swift 6에 대한 이해가 있다면 Swift 6으로 만드는 것이 좋을 듯 보입니다. 단지 프로그래밍 초보라면 Swift 6 이전 버전에서 작업하는 것이 좋을 수도 있어 보입니다.
'iOS 프로그래밍' 카테고리의 다른 글
Swift 6을 프로젝트에 적용한 후에... #2 알아야 하는 것들 (0) | 2025.07.03 |
---|---|
Swift 6을 프로젝트에 적용한 후에... #1 시작 (3) | 2025.07.03 |
SWIFT 디버깅시 유용한 API (0) | 2023.12.27 |
SwiftUI 다크 모드 지원 : 모드 변경시 색상 자동 변경 (0) | 2022.10.18 |
iOS 시뮬레이터에서 터치 동그라미 보이게 하기 (0) | 2022.03.17 |