Swift, iOS Foundation(30)
-
[WWDC25] 2025 Platforms State of the Union 빠르게 톺아보기
Platforms State of the Union - WWDC25 - 비디오 - Apple DeveloperApple 플랫폼의 최신 기술을 만나보세요.developer.apple.com 안녕하세요 여러분!어제 한국 시간 기준 새벽 2시, 팀쿡의 Keynote를 시작으로 일주일 간 진행되는 Apple의 WWDC25 행사가 시작되었습니다.저는 포항에 있는 애플 디벨로퍼 아카데미에서 4기 러너들과 아카데미 동문, 여러 외부 초청 지인분들과 함께 WWDC 2025 W@TCH PARTY를 즐겼는데요.Apple 생태계 OS의 "26" 버전 네임 통일을 시작으로 (visionOS는 2에서 냅다 26으로 쩜-프를 하게 되었다는..)유리와 물방울 그 사이 어딘가에 해당하는 Apple의 새로운 디자인 시스템 Liquid..
2025.06.12 -
[GCD] 메인 스레드에서 DispatchQueue.main.sync를 사용하면 안되는 이유
☑️ 데드락 (Deadlock) 발생 상황을 이해해보자메인 스레드에서 DispatchQueue.main.sync를 호출할 때 아래와 같은 데드락 (Deadlock, 무한 대기 상태) 에러가 발생합니다.우선 데드락이 발생하는 아래 코드의 의미를 정확하게 이해해보겠습니다.별도의 설정을 하지 않으면, 기본적으로 우리의 코드는 메인 스레드 (main)에서 동작합니다. -> 해당 코드도 메인 스레드 위에서 동작 중!DispatchQueue.main : main Queue로 작업을 전달한다는 의미입니다. 메인 큐는 기본적으로 Serial Queue (직렬 큐)이기에 동일한 스레드인 자기자신, 메인 스레드 (main)로 작업 (Task)이 할당되겠군요.sync : 동기적인 작업 (= 작업을 보내고 끝날 때까지 기다림..
2025.06.06 -
[Swift] COW (Copy-On-Write) 개념 완전 정복하기
요즘은 메모리 관리와 관련된 내용을 공부 중입니다.Swift에서 메모리와 관련된 가장 핵심 개념은 ARC (Automatic Reference Counting)라고 볼 수 있지만, 오늘 글에서는 CS 기초 개념쪽에 더 가까운 내용을 다루게 갈 것이구요. 앞으로도 메모리 관리나 디버깅과 관련된 다소 생소(?)할 수 있는 글들이 많이 올라올 것 같습니다!오늘은 그 메모리 개념의 가장 기초적인 가벼운 개념 COW (Copy-On-Write)부터 만나러 가보시죠!예전 Swift 메모리와 관련된 글은 아래 링크를 들어가시면 확인할 수 있습니다.[Swift] ARC (Automatic Reference Counting) 완전 정복하기[Swift] [weak self] 이젠 제대로 알고 사용하자! (feat. ARC..
2025.06.03 -
[Swift] Swift Equatable 완전 정복하기
Equatable | Apple Developer DocumentationA type that can be compared for value equality.developer.apple.com Equatable을 언제 사용했더라?아주 예전에 작성했던 글을 가지고 왔습니다.[Swift] 제네릭 (Generic) 완전 정복하기라는 글에서 제네릭 타입에 특정 조건을 걸기 위한 기능, 제네릭 타입 제약 (Generic Type Constraints)을 설명하며예시로 타입이 Equatable 프로토콜을 준수하도록 제약을 거는 코드를 소개한 적이 있었는데요.이 글에서는 Equatable이 "타입끼리 비교 연산을 하기 위해 = 즉, 비교 연산자를 사용하기 위해 필수적으로 채택해야 하는 프로토콜이다"까지만 소개하고 넘..
2025.04.28 -
[iOS] Swift의 UI 작업은 반드시 Main Thread에서 동작해야한다?
Swift의 UI 작업은 Main Thread에서 동작해야한다!아요 개발하다가 한 번쯤 아래와 같은 보라색 경고를 보신 적이 있을 겁니다.해당 상황의 경우에는,"오직 메인 스레드 (main thread only)에서만 사용할 수 있는 UIKit의 속성"을 "다른 스레드에서 접근"했기 때문에 발생했습니다.꼭 아래의 UIViewController 속성이 아니더라도,UIView, UINavigationController 등 UI, 즉 화면을 담당하는 객체 관련 코드가 메인 스레드가 아닌 다른 스레드 접근을 시도할 경우에화면과 동일한 보라색 스레드 경고를 표출하게 될 겁니다.UIKit 공식문서를 들어가봐도 Important 칸에 별도로 강조하면서 설명하고 있습니다."UIKit 클래스는 오직 메인 스레드 혹은 메..
2025.04.07