Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- ios
- UICollectionView
- 애니메이션
- swiftUI
- tableView
- Refactoring
- uitableview
- Xcode
- RxCocoa
- swift documentation
- Observable
- 리펙터링
- 스위프트
- combine
- SWIFT
- UITextView
- map
- 리팩토링
- collectionview
- Protocol
- uiscrollview
- HIG
- ribs
- rxswift
- 클린 코드
- Clean Code
- Human interface guide
- 리펙토링
- MVVM
- clean architecture
Archives
- Today
- Total
김종권의 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:19Explicit 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 선택 > 소스코드로 점프
* 참고
'WWDC 정리 > WWDC 2024 정리' 카테고리의 다른 글
Comments