| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 스레드 점유권
- 순환참조
- environment object
- Access Control
- 앱실행
- MainActor
- NavigationLink
- restful api
- async/await
- Swift
- 작업 취소
- rest api
- assosiated type
- 격리 시스템
- navigationview
- unowned
- ObservedObject
- REDRAW
- Git
- git 명령어
- Swift Concurrency
- weak
- actor
- MVVM
- task 취소
- 동시성 프로그래밍
- environment value
- SwiftUI
- swfitui
- StateObject
- Today
- Total
목록Swift/ETC (7)
Develup
Swift의 접근 제어(Access Control)는 코드의 가독성과 보안성을 높이는 핵심 기능입니다. 코드 구성 요소에 대한 접근을 의도적으로 제한함으로써 내부 구현 세부 사항을 숨기고 선호하는 인터페이스를 제공할 수 있습니다. 이 글에서는 Swift 접근 제어의 다양한 레벨과 실제 활용 방법, 그리고 개발 과정에서 마주치는 일반적인 상황들을 살펴보겠습니다.Swift 접근 제어의 기본 원리접근 제어는 특정 코드 조각이 다른 소스 파일이나 모듈에서 접근할 수 있는지를 제한하는 메커니즘입니다. 이를 통해 코드의 구현 세부 사항을 숨기고 사용자에게 명확한 인터페이스만 제공할 수 있습니다.Swift에서는 6가지 접근 레벨을 제공합니다:open: 가장 덜 제한적인 접근 레벨로, 모듈 외부에서의 접근과 상속을 허..
Swift의 동시성 모델에서 가장 중요한 구성 요소 중 하나는 바로 Sendable 프로토콜입니다. 이 프로토콜은 Swift 5.5에서 도입되었으며, 동시성 코드에서 데이터를 안전하게 공유하기 위한 핵심 메커니즘을 제공합니다. 하지만 많은 개발자들이 Sendable의 중요성과 적절한 사용법을 완전히 이해하지 못하고 있습니다. 이 글에서는 Sendable 프로토콜의 목적, 작동 방식, 그리고 실제 코드에서 어떻게 활용할 수 있는지 자세히 알아보겠습니다.Sendable 프로토콜이란?Sendable 프로토콜은 값이 동시성 도메인 간에 안전하게 전달될 수 있음을 나타내는 마커 프로토콜입니다. 여기서 동시성 도메인이란 태스크나 액터와 같은 동시성 컨텍스트를 의미합니다.public protocol Sendable ..
Swift의 액터 시스템은 동시성 프로그래밍에서 가장 혁신적인 기능 중 하나입니다. 특히 액터의 격리 메커니즘은 데이터 레이스와 같은 동시성 문제를 방지하는 핵심 요소입니다. 이 글에서는 액터의 격리 시스템이 어떻게 작동하는지, 이것이 왜 중요한지, 그리고 실제 코드에서 어떻게 효과적으로、최적화된 방식으로 활용할 수 있는지 살펴보겠습니다.액터 격리의 개념과 원리액터 격리(Actor isolation)는 액터 내부의 가변 상태에 대한 접근을 동기화하여 데이터 레이스를 방지하는 메커니즘입니다. 이는 Swift의 타입 시스템과 컴파일러가 강제하는 규칙을 통해 구현됩니다.액터 격리의 기본 원칙은 다음과 같습니다:배타적 접근: 한 번에 하나의 태스크만 액터의 가변 상태에 접근할 수 있습니다.경계 보호: 액터 외부..
Swift의 동시성 모델에서 UI 관련 코드는 특별한 주의가 필요합니다. 여러 백그라운드 태스크가 동시에 UI를 업데이트하려고 하면 예측할 수 없는 동작이나 크래시가 발생할 수 있기 때문입니다. Swift의 MainActor는 이러한 문제를 해결하기 위한 핵심 도구입니다.MainActor는 Swift의 동시성 프레임워크에서 UI 업데이트를 메인 스레드에서 안전하게 처리할 수 있도록 도와주는 전역 액터입니다. 앱의 사용자 인터페이스는 항상 메인 스레드에서 업데이트되어야 하는데, MainActor는 이 규칙을 코드 수준에서 적용하도록 도와줍니다.이 글에서는 MainActor의 개념, 작동 방식, 그리고 실제 코드에서 어떻게 활용할 수 있는지 알아보겠습니다.MainActor란 무엇인가?MainActor는 Sw..
Swift에서 타입 안전성과 코드 재사용성은 매우 중요한 개념입니다. 이를 구현하기 위한 핵심 기능으로 제네릭(Generics)과 연관 타입(Associated Types)이 있습니다. 두 기능 모두 타입 추상화를 제공하지만, 사용 목적과 구현 방식에는 중요한 차이가 있습니다. 이 글에서는 Swift의 제네릭과 연관 타입의 개념, 차이점, 그리고 각각 언제 사용해야 하는지 알아보겠습니다.초보 개발자부터 중급 개발자까지 많은 분들이 제네릭과 연관 타입을 혼동하거나 적절한 사용 시점을 파악하기 어려워합니다. 이 글은 두 개념의 명확한 이해와 효과적인 활용 방법을 안내하기 위해 작성되었습니다.제네릭(Generics)이란 무엇인가?제네릭은 타입에 구애받지 않는 유연한 코드를 작성할 수 있게 해주는 Swift의 ..
강한 참조 (Strong Reference) 해당 인스턴스의 소유권을 가진다. 자신이 참조하는 인스턴스의 retain count를 증가시킨다. 값 지정 시점에 retain이 되고 참조가 종료되는 시점에 release가 된다. 선언할 때 아무것도 적어주지 않으면 default로 strong이 된다.var test = Test() // retain count 1 증가 test = nil // retain count가 1 감소되어 0이 되면서 메모리 해제됨 약한 참조 (Weak reference) 해당 인스턴스의 소유권을 가지지 않고, 주소값만을 가지고 있는 포인터 개념이다. 자신이 참조하는 인스턴스의 retain count를 증가시키지 않는다. release도 발생시키지 않는다. 자신이 참조는 하지만 wea..
출처 value type과 달리 reference type은 하나의 인스턴스가 참조를 통해 여러곳에서 접근하기 때문에 언제 메모리에서 해제 되는지가 중요하다. 인스턴스가 적절한 시점에 메모리에서 해제되지 않으면 한정적인 메모리 자원을 낭비하게 되고, 이는 성능저하로 이어진다 Swift는 메모리 사용을 관리하기 위해 메모리 관리 기법인 ARC를 사용한다. ARC(automatic reference counting) 자동으로 메모리를 관리해주는 방식. 더이상 필요하지 않은 클래스의 인스턴스를 메모리에서 해제하는 방식으로 동작한다. 인스턴스가 언제 메모리에서 해제되어야 할지를 컴파일과 동시에 결정함 ARC의 장단점 장점 컴파일 당시 이미 인스턴스의 해제 시점이 정해져 있어서 인스턴스가 언제 메모리에서 해제될지..