Notice
Recent Posts
Recent Comments
Link
관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] 4. WWDC2024 정리 - (2) What's new in Xcode 16 (Xcode16 신기능, Explicit Modules, DWARF5, Thread performance checker, Swift Testing) 본문

WWDC 정리/WWDC 2024 정리

[iOS - swift] 4. WWDC2024 정리 - (2) What's new in Xcode 16 (Xcode16 신기능, Explicit Modules, DWARF5, Thread performance checker, Swift Testing)

jake-kim 2024. 6. 21. 01:19

Explicit Modules

  • 단 한줄의 코드도 변경하지 않고 빌드 향상이 가능
  • 더 빠른 디버깅 제공

  • C와 Objective-C의 경우에는 Explicit Modules 기능이 디폴트로 on 되어있고, Swift는 build setting에서 설정 필요

Explicit Modules 컴파일 단계

  • explicit built modules를 yes로하면 각 컴파일 단위의 처리를 3단계로 처리
    • Scan
    • Build Modules
    • Build Source

  • Scan단계와 Build Modules 단계는 빌드 로그에서 표시된 것을 확인 가능
    • "Scan Dependency", "Compile Clang module", "Compile Swift module" 커멘드로 표출

  • 이전에는 원래 이 단계들이 소스 파일 컴파일의 일부로, 암시적으로 수행되었음
    • 이제는 빌드에 대한 훨씬 자세한 분석을 위해서 명확한 오류 메시지가 표출되도록 변경됨
  • Explicit Modules은 빌드 타임라인에도 반영
    • 이를 통해 빌드 프로세스에서 어느 시간이 소요되는지 시간 파악이 용이

* 자세한 내용은 이후 포스팅 될 WWDC2024 "Demystify explicitly built modules" 세션에서 계속..

Explicit Modules과 Debug

  • Explicit Modules를 사용하면 디버깅이 빨라짐
    • lldb를 사용할 때 빌드에 관한 pirnt를 재사용할 수 있음 (macOS Sequoria와 iOS 18부터 DWARF5 형식을 기본 심볼로 채택)
    • DWARF5를 사용하면 dSYM 번들이 더 작고 심볼을 조회하는 속도가 더욱 빨라짐

향상된 Thread performance checker

  • disk에 쓰기 동작을 할때의 성능, 앱 구동에 관한 성능을 분석하는 도구가 새로 추가됨

  • Xcode의 Organizer에 새로운 앱 구동에 대한 새로운 분석 카테고리가 생성

  • disk 쓰기에 관한 분석도 데이터 크기 순서로 나열되어 있으므로 우선순위를 고려한 분석도 용이

보기 편한 stack trace

  • Xcode에 중단점을 설정하고 디버깅을 시도할 때 이전에는 코드가 있고, 그 코드를 누르면서 어떤 소스코드에서 발생했는지 역추적을 시도했어야 했는데, Xcode 16부터는 코드가 stack trace에 맞게 나열되어서 보기가 편해짐
    • 브레이크 포인트를 잡고, Xcode하단에 stack으로 쌓인 아이콘 클릭

  • stack trace에 따라서 소스코드도 바로 나열됨

Swift Testing

  • Swift를 사용하여 테스트 표현식을 더욱 간결하게 만드는 새로운 프레임워크
    • 기존의 XCTest도 같이 동작하기 때문에 응용도 가능
  • import Testing하고, 테스트하려는 함수 앞에 @Test 키워드 붙이기

  • 이렇게 처리하면 Xcode의 테스트 탐색창에 자동으로 표출됨

  • Testing 프레임워크에서 제공하는 #expect를 사용하여 테스트수행

  • 테스트 실패 화면

  • 실패 메시지를 클릭하면 데이터 세부사항도 확인이 가능

테스트 실패 > 데이터 빠르게 확인 방법

  • tags를 통한 테스팅 그룹화
    • @Test(.tags(.{name}))을 사용하면 테스팅 그룹화가 가능
    • Xcode에서 tags버튼을 클릭하여 그룹화된 테스팅 확인이 가능

  • tags를 사용하면 test plan에서 특정 테스트를 포함하거나 제외도 가능
    • 네비게이터 상단의 "Edit Test Plan"을 선택

  • Exclude Tags에 planting을 넣어주어서 테스트에서 제외

* 더 자세한 Swift Testing 개념은 이후 포스팅될 WWDC2024의 Meet Swift Testing, Go further with Swift Testing 세션 참고

Instrument, Profile

  • Instrument 16부터는 Instrument에서 분석한 데이터에서 바로 소스코드로 jump가 가능하여 어떤 부분에서 문제가 있는지 빠르게 파악이 가능
    • Instrument의 frame graph창에서 데이터 부분을 오른쪽 마우스 클릭한 후 > Reveal In Xcode 선택 > 소스코드로 점프

* 참고

- https://developer.apple.com/videos/play/wwdc2024/10135/

Comments