| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |
- tableView
- uiscrollview
- 클로드코드
- map
- 스위프트
- HIG
- UITextView
- Xcode
- swift documentation
- MVVM
- SWIFT
- Human interface guide
- Observable
- Clean Code
- UICollectionView
- 클린 코드
- combine
- collectionview
- 애니메이션
- 리팩토링
- claude code
- Protocol
- rxswift
- Refactoring
- swiftUI
- RxCocoa
- uitableview
- clean architecture
- ios
- 리펙토링
- Today
- Total
목록WWDC 정리/WWDC 2025 정리 (13)
김종권의 iOS 앱 개발 알아가기
View 업데이트 빈도수 파악하기View의 body부분에서 업데이트가 너무 많게되면 아래 사진처럼 데드라인을 넘게되는 경우가 존재-> hitch가 발생업데이트 수 프로파일링 방법View Body Updates 하위 트랙 선택빨간선 or 주황선 부분을 드래그하여 영역 선택 LandmarkListItemView에 Update Count가 30으로 찍혀있음View코드를 작성할 때 이 부분을 확인해보면 내가 의도된 업데이트 카운트로 구현했는지 알 수 있음만약, List와 Row가 있는 뷰를 구현할 때 Row에 state하나만 바꿨을때, List전체가 업데이트 되었는지 파악하는 용도로도 사용이 가능* 참고- https://developer.apple.com/videos/play/wwdc2025/306/
프레임 드랍(Hitch)이 일어나는 과정 (Render Loop)앱은 특정 싸이클마다 깨어나면서 이벤트를 처리아래처럼 싸이클마다 클릭 이벤트를 인식하고 UI를 업데이트이때 변경된 SwiftUI View의 body 프로퍼티를 실행함이 UI를 업데이트 하는 과정들은 각 주기 프레임 데드라인전에 완료되어야함즉 데드라인 전에 UI가 업데이트 되는 것렌더링 된 출력은 해당 데드라인 직후에 화면에 표출됨 (주의: 첫번째 프레임에서 내부적인 UI 관련 업데이트를 하고 화면에 보이는 것은 다음 프레임에서 수행)아래와 같은 프레임 드랍 케이스의 Render Loop는?UI 업데이트 부분이 프레임 데드라인 후에 실행되었음이미 두 번째 프레임에서는 첫번째 UI 업데이트를 썼으므로 다음 업데이트는 3번째 프레임에서 시작해야함..
SwiftUI 프로파일링Instrument > SwiftUI 선택하고 프로파일 수행먼저 SwiftUI 로 되어있는 꺽쇠를 클릭 > View Body Updates > 영역을 드래그하여 지정한 후 해당 영역 set Inspection Range And Zooms 클릭 > Time Profiler 클릭 이전 포스팅 글 참고: https://ios-development.tistory.com/1812Time Profiler는 정기적으로 샘플을 추출하여 현재 실행중인 함수에 대한 분석을 시도뒤에서 나올 예제는 body가 실행되는 동안 프로파일링WWDC 영상처럼 호출 스택이 여러가지가 표출됨이 중에서 살펴볼 것은 LandmarkListItemView이므로 command + F를 하여 검색왼쪽을 보면 각 call s..
SwiftUI 최적화 방향SwiftUI 코드가 병목 현상인 시점을 식별 할 수 있는 방법을 중점으로 두고 SwiftUI가 효율적으로 작동하는 방법을 알아보는 것이 목적병목 현상) 애니메이션이 일시 중지되거나, 점프되거나 스크롤이 지연되는 경우성능 문제를 식별하는 가장 좋은 방법은 Xcode Instrument를 사용하여 앱을 프로파일링하는 것XCode 26부터 SwiftUI 프로파일링 할 수 있는 방법이 등장Instrument > SwiftUI 메뉴 프로파일링에서 볼 수 있는 것Long View Body Updates: body 프로퍼티를 실행하는데 너무 오래 걸릴때 표시가 됨Long Representable Updates: View와 ViewController가 너무 오래 걸릴때 표시가 됨Other L..
iOS 26의 BGContinuedProcessingTask백그라운드에서 지속적으로 처리가 필요한 작업들에 사용앱은 백그라운드 진입 후에도 시스템은 UI를 통해 진행 상황을 표시ex) 앱에서 내보내기 설정 > 백그라운드 진입 시 상단에 진행 상태 표시해주는 `Journal` 앱백그라운드에서 언제든 작업을 취소할 수도 있음BGContinuedProcessingTask의 특징명확한 사용자 행동으로 시작 (버튼, 클릭 등)예) 파일 추출, sns 업로드사용자는 작업이 자동으로 시작되리라 기대하지 않음BGContinuedProcessingTask으로 안되는 예) 백업, 사진 동기화즉 예상하지 못하는 작업을 이 API에는 사용하면 안됨BGContinuedProcessingTask 사용 방법1. info.plist..
Request background runtime백그라운드에서 특정 처리를 하고싶은 경우 사용백그라운드에서 생성된 데이터를 바탕으로 ML을 생성하는 등의 처리를 하고 싶은 경우 사용백그라운드에서 DB를 클리어하고싶은 경우 사용등록 방법AppDelegate에서 forTaskWithIDentifier로 등록closure부분에 런타임에 호출할 내용만 작성해주면 완료아래처럼 request를 만들고 submit하면 동작이됨배터리 소모를 최소화하고 앱의 배터리 사용량도 줄어들게 하고싶은 경우?아래처럼 requiresNetworkConnectivity나 requiresExternalPower 파라미터에 값을 세팅하여 섬세한 처리가 가능ex) 작업이 지연에 민감하지 않은 경우? > 충전 중이면서 네트워크에 연결됐을 때만..
백그라운드 처리를 할때 고려하는것백그라운드에서 처리할 때 프로세스 입장에서 고려하는 것들배터리 생명주기공유 자원 (Memory, CPU, 네트워크 대역폭, 저전력 모드, 적은 데이터 모드)ex) 공유 자원 예시 - 포그라운드 관점백그라운드에 너무 많은 자원을 사용하면 비효율적으로 처리가 될 뿐 아니라 포그라운드 경험과도 충돌되므로 백그라운드에 있는것들 종료할 수 있음때문에 백그라운드 작업을 최소화하여 메모리 사용량을 줄여야함또한 사용자가 저전력 모드를 키는 성격을 고려하여 사용자 관점에서 생각하며 설계해야함애플에서 권고하는 백그라운드 처리 방향효율성, 최소성, 탄력성, 신중함, 적응성백그라운드 작업을 한다는 것은 런타임 기회가 생길 때마다 점진적 진행이 가능해야함(시스템 조건과 우선순위를 이해하고 적응할..
백그라운드 작업이란?사용자가 앱을 나가고도 프로세스가 살아 있으면 앱은 백그라운드로 전환됨앱은 일시중단되며,"Suspended" CPU를 사용하지 않게됨배터리를 보호하고 개인 정보를 지키는 역할포그라운드 앱에 리소스를 확보해 줌(앱은 일시중단 전 작업을 마무리할 수 있도록 백그라운드 실행 시간을 요청할 수 있음)위처럼 백그라운드 상태를 잘 사용하려면 시스템이 리소스를 어떻게 우선순위화하고 관리하는지, 앱 안에서 무엇을 할 수 있는지 이해하는것이 좋음백그라운드를 이해하는 핵심애플이 백그라운드 상태를 만드는 목적의 핵심은 `배터리 수명`을 보호하고 `성능을 최적화`하여 부드럽고 반응성 있는 사용 경험을 유지하는 것때문에 백그라운드 실행은 보장되지 않음기회가 있을 때만 허용되고 대부분은 재량에 따라 엄격히 관..