iOS
-
GCD와 Swift Concurrency의 차이 및 등장 배경iOS/Swift 2025. 10. 25. 14:09
2009년 애플은 기존의 동시성 모델의 단점을 보완하기 위해 Grand Central Dispatch(GCD)를 개발해 발표합니다. 그로부터 12년이 지난 2021년 Swift Concurrency라는 새로운 비동기 프로그래밍 모델을 선보였습니다. Swift Concurrency는 어떤 문제를 해결하려고 했을까요?또 GCD와 비교했을 때 어떤 장점을 갖고 있을까요? 이 포스트에서는 이 두 가지 질문을 중심으로 살펴보겠습니다.1. 콜백 지옥(Callback Hell)및 가독성 문제 해결문제점기존 비동기 작업(네트워크 통신, 파일 처리 등)은 주로 클로저 기반의 완료 핸들러(Completion Handler)를 사용해 처리여러 비동기 작업이 순차적으로 중첩될 때, 클로저가 계속 깊어지면서 코드의 들여 쓰기가..
-
iOS 클린 아키텍처 + MVVM 개념과 코드 적용iOS/Swift 2025. 10. 24. 18:28
앱을 개발할 때 구조(아키텍처)를 잘 만들어 놓으면 코드를 추가하거나 변경하는 수정이 쉬워집니다. 반대로 구조가 좋지 않으면 일부분을 수정하기 위해 상관없는 부분까지 만져야 해서 작업이 매우 복잡해질 수 있습니다. 이번 포스트에서는 이 포스트를 기반으로 가장 많이 사용되고 있는 아키텍쳐인 MVVM과 클린 아키텍쳐를 내용을 살펴보고, iOS앱에서 어떻게 적용할 수 있는지 알아보겠습니다. 이 포스트의 예제는 여기에서 다운로드할 수 있습니다.1. 클린 아키텍쳐엉클밥 아저씨가 만든 아키텍처로 앱을 여러 레이어(층)로 나눴습니다. 핵심은 의존성 규칙입니다. 레이어의 바깥쪽이 안쪽 향해서만 의존해야 한다는 것입니다. 이것을 저수준 층이 고수준 층에 의존해야 한다고 표현하기도 합니다. 수준이 높을수록 잘 변하지 않고..
-
[Swift] ABI stability란?iOS/Swift 2025. 10. 16. 12:59
Swift 5.0에서 가장 중요한 피처는 ABI stability의 지원이라고 할 수 있습니다. 이번 포스트에서는 이 ABI stability 대해 알아보도록 하겠습니다.ABI란?ABI라고 하면 뭔가 떠오르는게 있지 않으시나요? 그건 바로 모두가 잘 아는 API! 네~ ABI는 API와 비슷합니다. API는 Application Programming Interface의 약자로 프로그래밍시 코드에서 사용하는 인터페이스입니다. ABI는 Application Binary Interface의 약자로 바이너리 간 인터페이스입니다. 런타임에 Swift 프로그램 바이너리는 다른 라이브러리와 ABI를 통해 상호작용합니다. 운영체제와 앱, 앱과 라이브러리간 상호작용을 위해 ABI를 사용하게 됩니다. API에는 보통 함..
-
[Swift] 단단하고 유연한 HTTP 네트워킹 코드 짜기iOS/Swift 2025. 9. 26. 19:44
1. 문제Swift에서 HTTP 네트워크 코드는 가장 흔하게 다루는 코드 중 하나입니다. 서버와 HTTP 통신 없이 동작하는 앱이 거의 없기 때문이죠.그만큼 흔하게 사용하는 코드인데 이 코드 어떻게 만들어서 사용 중이신가요?혹시 이런식으로 사용하고 계신가요?// 선언class HTTPClient { func fetch(_ urlString: String, as type: T.Type) async throws -> T { guard let url = URL(string: urlString) else { throw URLError(.badURL) } let (data, _) = try await URLSession.shared.data(from:..