분류 전체보기 487

UNUserNotificationCenter `requestAuthorization`에서 발생하는 희귀한 버그 현상 분석

UNUserNotificationCenter `requestAuthorization`에서 발생하는 희귀한 버그 현상 분석 예전에 작성된 코드에서 앱이 멈추는 상황이 발생해서 사례 분석 상세한 분석 링크https://github.com/lgvv/unusernotificationcenter-requestauthorization-blocking-simulation GitHub - lgvv/unusernotificationcenter-requestauthorization-blocking-simulation: Investigating Rare Bugs in UNUserNotificationCeInvestigating Rare Bugs in UNUserNotificationCenter’s RequestAuthori..

l-value, r-value

l-value, r-value프로젝트 내 C, C++, objective-c, swift 코드가 존재하여 이를 분석하면서 개념 정리. 용어 정리 L-value (locator value)란?메모리상의 위치(location) 를 가리키는 표현식.: 대입의 왼쪽에 올 수 있는 것(항상은 아님). 변수, 배열 원소, 프로퍼티, deref(*p) 등.: 즉, 여기에 값을 저장할 수 있음. R-value (read value / right value)란? 실제 값(리터럴, 계산 결과, 일시적인 임시객체).: 보통 대입의 오른쪽에 오는 것. 임시값이므로 주소를 갖지 않거나 곧 사라짐.: 즉, 이건 읽을 수는 있지만, 직접 이곳에 값을 저장할 수는 없다. ** 참고 ** : 현대 언어는 이분법을 확장.: 예: C++..

ARC in Swift: Basics and beyond - WWDC21

ARC in Swift: Basics and beyond - WWDC21 Swift에서는 가능하다면 Value Type 사용하는게 더 좋은데 Reference Type을 사용해서 의도치 않은 데이터 공유에 따른 오류를 피할 수 있음.그럼에도 불구하고 class와 같은 Reference Type을 사용해야 한다면 Swif에서 ARC를 통해 메모리를 관리하고 효과적으로 코드를 작성하기 위해서는 ARC의 동작 방식을 이해하는게 도움이 됨. Object lifetimes and ARC: Swift에서 객체 수명과 ARC에 대한 리뷰Observable object lifetimes: 관찰 가능한 객체의 수명이 무엇인지 설명: 관찰 가능하게 만드는 언어적 특징과 관촬된 객체 수명에 의조낳는 것의 결과와 이를..

apple/WWDC 2025.10.23

Adaptive Bit Streaming

Adaptive Bit Streaming Adaptive Bitrate Streaming란 네트워크 환경에 따라 실시간으로 비디오 스트림의 비트레이트(화질)을 동적으로 조절해 시청자에게 끊김 없는 최적의 시청 경험을 제공하는 기술 동작 방식비디오 서버는 하나의 원본 영상을 여러가지 비트레이트와 해상도로 인코딩하여 저장. 시청자의 비디오 플레이어는 현재 네트워크 대역폭(bandwidth)를 지속적으로 모니터링하면서 대역폭이 충분하면 고화질(높은 비트레이트) 세그먼트(segment)를 요청하고대역폭이 충분하지 않다면 저화질(낮은 비트레이트) 세그먼트로 자동으로 전환하면서 동적으로 동작 동작 방식에 대한 이미지이미지를 동적으로 변경하면서 실행 주요 프로토콜Apple - HLS (HTTP Live Stream..

apple/HLS 2025.10.23

Secure your app with Memory integrity Enforcement (메모리 무결성 강화로 앱 보호하기)

Secure your app with Memory integrity Enforcement (메모리 무결성 강화로 앱 보호하기) 메모리 무결성 강화를 통해 앱을 보호하는 방법. Memory corruption: Most common vulnerability (메모리 손상) > 공격자는 메모리 버그를 이용해 앱의 제어권을 장악하고 사용자의 민감한 데이터를 훔칠 수 있음. 예를 들어 버퍼 오버플로우는 버퍼의 경계를 넘어 다른 할당의 메모리를 손상시킴.: 이런 경우에 다른 포인터가 메모리를 읽을 때 데이터 손상과 재현하기 어려운 충돌이 발생할 수 있음. Use-after-free memory corruption 앱이 메모리 chunk를 할당 해제했지만 해당 메모리에 dangling pointer가 남아 있는..

apple/WWDC 2025.10.19

Elevating an app with Swift concurrency (Swift 동시성으로 앱 수준 높이기)

Elevating an app with Swift concurrency (Swift 동시성으로 앱 수준 높이기) Asynchronous code: 단일 스레드에서 시작해서 필요에 따라 비동기 코드 도입Parallelism: 앱 성능 개선을 위해 자원이 많이 소모되는 작업을 오프로드하고 병렬로 실행Data-race safety: 일반적인 데이터 경쟁 안전 시나리오와 해결을 위한 접근 방식도 알아봄Structured concurrency: 구조화된 동시성을 살펴보고 동시성 코드를 더 세밀하게 조정하는 TaskGroup 등도 사용 Asynchronous code Xcode에 몇가지 기능이 추가되어 동시성을 더 쉽게 도입할 수 있음.: Approachable Concurrency를 YES로 설정: Def..

apple/WWDC 2025.10.19

Actor에서 Class + OSAllocatedUnfairLock

Actor에서 Class + OSAllocatedUnfairLock 상태 보호를 위해서 actor로 작성된 객체를 class + OSAllocatedUnfairLock으로 변경프로파일링 과정에서 특정 메서드의 호출 빈도가 높아지는 경우 지속적으로 CPU Usage가 높게 잡히는 부분이 있어서 확인 Actor 기반으로 작성한 메서드를 실행했을 때completeTaskClousre로 나타나는 영역에서 Weight를 많이 차지함.해당 메서드의 구현부는 swiftlang / swift에 존재.https://github.com/swiftlang/swift/blob/main/stdlib/public/Concurrency/Task.cpp 간단한 Task를 컨텍스트에 넣어서 클로저로부터 최종 반환을 처리하는 함수 /..

백그라운드에서 작업 완료하기 (Finish tasks in the background) -wwdc25

백그라운드에서 작업 완료하기 (Finish tasks in the background) -wwdc25 사용자가 앱을 나가고도 프로세스가 살아 있으면 앱은 백그라운드로 전환.기본적으로 백그라운드 앱은 Suspended 되어서 CPU를 사용하지 않게 됨. 이는 배터리를 보호하고 개인 정보를 지키며 foreground 앱에 더 많은 리소스를 확보해 줌. 경우에 따라서는 앱은 suspened 전 작업을 마무리 할 수 있도록 백그라운드에 실행을 요청할 수 있음. 백그라운드 런타임을 사용하기 전에 시스템이 리소스를 어떻게 우선순위화 하고 관리하는지 그리고 앱 안에서 무엇을 할 수 있을지 이해하는 것이 좋음. 시스템의 목표는 배터리를 보호하고 개인정보를 지키며 반응성 좋은 앱을 만드는 것임.즉, 백그라운드 실행은..

apple/WWDC 2025.07.30