번호 : 039, 작성일자: 2024-10-07

2024.09.30 ~ 2024.10.06

🚨 iOS 18 및 Xcode 16 대응


기본적으로 Xcode 16을 사용하기 위해서는 macOS를 Sequoia 15.0으로 업데이트 해야합니다.

그리고 macOS가 Sequoia인 경우 공식적으로 Xcode 15를 실행할 수 없습니다. (우회적으로는 Xcode 15 앱 → 패키지 내용보기 → Contents → MacOS → Xcode 파일명을 가진 Unix 실행파일을 실행하면 가능합니다.)

Xcode 16에서는 CocoaPods와 관련된 이슈가 많고, 카카오 SDK도 점차 SwiftPM으로 발전해가는 흐름에 맞춰 SwiftPM으로 이관의 장점이 하나 더 추가된 것 같다.

iOS 18에서는 UITabBarController의 신규 프로퍼티들이 추가된 영향과 탭의 이동함에 따라 포함되어있는 ViewController들의 생명주기 메서드 호출순서가 다르게 호출되는 부분이 있었다.

또한, CollectionViewCell을 사용할 때 dequeue를 2번 이상하게되면 앱이 종료되도록 변경되었다.

운영체제 버전이 올라갈 때는 항상 주의해야겠다.

📂 Tuist에서 UnitTest, UITest 타겟 빌드 설정


Tuist로 프로젝트를 관리하는 경우 UnitTest 타겟을 설정하는 경우 Signing 설정에서 Provisioning Profile이 None Required 상태여야 합니다.

따라서 Code Signing Entitlements를 빈값으로 처리해주면 해결되고, dependencies에 인자로 UnitTest를 지정할 타겟을 추가합니다.

UITest 타겟은 동일하게 설정하지만 Signing 설정에서 Provisioning Profile은 Xcode Managed Profile로 지정합니다. UnitTest와 차이점은 dependencies에는 UITest를 지정할 타겟과 의존성으로 추가되는 라이브러리도 함께 추가해줘야 빌드가 됩니다.

🙋🏻‍♂️ 기타 사항


  1. TCP, UDP Socket과 WebSocket에 대한 개념을 정리해보았는데 더 자세히 정리한 후 Swift로 직접 구현해봐야 겠다.