반응형

SWIFT 5

Swift 6을 프로젝트에 적용한 후에... #3 마치며...

Swift 6로 만들던 프로젝트를 업데이트한 후에 든 생각은 기존에 계속 업데이트하고 있는 앱인 나만의 프로젝트는 Swift 6로 업데이트를 심각하게 고민해봐야겠다것 이었습니다. 정말로 중요한 교훈일수도 있습니다. 신규로 만들고 있던 5xxx라인짜인 앱을 고치는데 Swift 6 스터디까지 합해서 몇주간이 걸렸습니다. 대부분의 시간은 클래스 구조를 다시 디자인하고 actor로 변경하는 것이었습니다. 또한 태스크 블록이나 비동기처리 관련 버그 처리에도 많은 시간이 걸렸습니다. 그렇다고 UI가 아닌 클래스가 메인쓰레드에서만 실행되게 하는건 어딘가 문제가 있어 보입니다. 나만의 프로젝트는 몇 만라인의 코드를 가지고 있고 이것을 바꾸고 테스트하는 시간은 상상이상일거 같습니다. 이 글을 보시는 분들도 신규 프로젝트..

iOS 프로그래밍 2025.07.03

Swift 6을 프로젝트에 적용한 후에... #2 알아야 하는 것들

Swift 6로 프로그래밍하기 위하여 알아야할 기본 상식에 대해서 적어 보도록 하겠습니다. Swift 6은 기존 버전과는 다르게 실행이 태스크 블록 단위로 멀티쓰레드에서 실행됩니다. 이것은 디버깅시 다양한 쓰레드의 콜스택에서 확인할 수 있습니다. 그리고 이것은 다른 언어들과는 다르게 언어 레벨에서 지원하며 데이터 경합에 의한 문제는 컴파일시에 체크된다는 점입니다. 컴파일시 체크된다는 것은 어떻게 작성하든 컴파일러가 검증해준다는 의미가 아닙니다. Swift 6에서 언어적으로 지켜야할 방법에 따라 프로그래밍해야 한다는 점입니다. 실제로 언어에 맞게 작성하게 되면 실행 선후 관계의 문제는 발생해도 데이터 경쟁에 따른 문제가 발생하지는 않습니다. Swift 6를 사용하게 되면 Task 블록을 많이 사용하게 됩니..

iOS 프로그래밍 2025.07.03

Swift 6을 프로젝트에 적용한 후에... #1 시작

최근에 iOS용 신규 앱을 하나 새롭게 개발하고 있습니다. 몇 개월간의 개발 속에서 기본 골격을 만들었을 때 하나의 사소한 에러를 만났습니다. 해당 에러를 수정하던 중 이게 병렬처리와 관련된 에러란 것과 현재 Swift가 버전 6까지 나왔다는 것을 알게되었습니다. 신규 프로젝트를 만들때 따로 Swift 버전을 확인하지 않고 기본 설정된 버전(Swift 5.x)으로 개발했기 때문에 버전 6에 대해서는 모르고 있었습니다. 신규 프로젝트인 관계로 처음 만들때 최신 Swift를 적용하자는 생각에 Swift 버전을 6으로 올렸고 그때부터 컴파일 지옥이 시작되었습니다. 지금까지 참 많은 언어의 버전업을 경험했던거 같습니다. 그 때마다 언어의 버전업을 두려워하지 않았던 것은 보통 과거 버전 언어의 호환이 크게 문제가..

iOS 프로그래밍 2025.07.03

SWIFT 디버깅시 유용한 API

실제로 사용해보고 너무 유용했던 Swift로 디버깅 할 때 도움이 되는 API 공유합니다. 1. 현재까지의 콜스택 정보 프린트하기 Thread.callStackSymbols.forEach{print($0)} 복잡한 앱이나 프그램을 만들다보면 자연스럽게 많은 함수를 만들게 됩니다. 해당 API는 특정 함수가 호출될 때 어디서부터 어떤 순서로 호출되었는지를 알려고 할 때 유용한 함수입니다. 물론 콜스택은 브레이크 포인터를 걸어 놓으면 볼 수 있지만 때때로 여러 번의 호출 중 이상한 곳에서 호출되는지를 체크하고 싶을 때가 있습니다. 해당 상황에서 매번 브레이크를 걸고 디버깅하는 것은 디버깅 시간을 많이 소모하기 때문에 해당 함수를 사용하여 디버깅 로그를 보고 파악하면 디버깅 시간을 많이 줄 일 수 있습니다. ..

iOS 프로그래밍 2023.12.27

SwiftUI 다크 모드 지원 : 모드 변경시 색상 자동 변경

iOS는 다크 모드를 지원합니다. iOS에서 다크 모드 변경시 iOS에 의하여 앱의 네비게이션 바의 색상이나 기본 글자색 같은 경우는 자동으로 변경됩니다. 하지만 사용자가 직접 설정한 색은 다크 모드에 맞게 변경되지 않습니다. 이런 이유로 자동으로 변경되는 색상과 그렇지 않은 색상의 부조화로 인하여 화면의 가독성이 떨어지거나 화면 색상이 깨진거처럼 보기 좋지 않게 됩니다. 여기서는 다크 모드시 자동으로 색상이 변경하는 방법을 알아보도록 하겠습니다. 위 스크린샷처럼 우선 Asset를 프로젝트에서 선택하여 줍니다. 그 다음으로 서브 메뉴가 나오게 한 뒤에 "New Color Set"을 선택하여 줍니다. 스크린샷의 BackGroundColor와 같이 색상을 선택하면 Any Appearance와 Dark가 나옵..

iOS 프로그래밍 2022.10.18
반응형