목록iOS/Swift (23)
BIBI BLOG

[SwiftUI] SVG 이미지를 로드하는 방법🖼️(How to Load SVG Images in SwiftUI)이번글에서는 SDWebImage와 SDWebImageSVGCoder를 이용하여 SVG 이미지를 표시하는 방법을 알려드리겠습니다 :)먼저 두 라이브러리를 세팅하는 방법부터, SVG 이미지를 로드하는 과정을 단계별로 정리해볼게요.1️⃣ 필요한 라이브러리 설치SDWebImageSwiftUI이 라이브러리는 SwiftUI에서 인터넷 이미지를 로드하기 편리한 기능을 제공합니다.SDWebImageSVGCoderSVG 이미지를 SDWebImage에서 해석할 수 있도록 도와주는 코더입니다.– 이 패키지를 설치하면 SDWebImage도 자동으로 설치됩니다.GitHub 링크:SDWebImage/SDWebImag..

📌 [SwiftUI] Safari로 웹 링크 여는 방법 (Xcode 16.1 기준)(How to open web links in Safari)SwiftUI에서 버튼을 눌렀을 때 웹페이지를 Safari에서 여는 방법이 여러 가지 있습니다.오늘은 가장 쉽게 사용할 수 있는 두 가지 방법을 알려드리도록 하겠습니다!1️⃣ Link 뷰 사용하기SwiftUI에서는 Link라는 뷰를 제공하는데,이걸 사용하면 버튼처럼 보이지만 클릭하면 Safari에서 웹 페이지를 열어주는 기능을 해요.✅ 기본 사용법Link("SwiftUI 배우기", destination: URL(string: "https://www.hackingwithswift.com/quick-start/swiftui")!)✔️ "SwiftUI 배우기"라는 버튼..

📚async let vs Task group 비교Swift에서 비동기 작업(async tasks)을 다룰 때, async let과 TaskGroup은 매우 유용한 기능입니다. 하지만 두 개의 차이점을 제대로 이해하지 않으면 코드가 예상과 다르게 동작할 수도 있어요.오늘은 이 두 가지를 쉽게 비교하고, 어떻게 활용하면 좋을지 알아보겠습니다!1️⃣ async let 이란?✅ async let의 기본 개념async let을 사용하면 동시에 여러 개의 비동기 작업을 실행할 수 있어요.📝예제func fetchData() async { async let first = fetchPart1() async let second = fetchPart2() async let third = fetchPart..

📱 SwiftUI에서 메모리 사용 줄이기! ⚡SwiftUI로 앱을 만들다 보면, 어느 순간 앱이 점점 무거워지고 느려지는 걸 느낄 때가 있어요.메모리를 많이 쓰면 기기 성능이 떨어지고, 심한 경우 앱이 강제 종료될 수도 있죠.이런 문제를 방지하려면, SwiftUI의 동작 방식을 잘 이해하고 메모리를 효율적으로 관리하는 게 중요해요.이번 글에서는 앱을 더 가볍고 빠르게 만들 수 있는 실전 최적화 방법을 정리해보았습니다.🚀1️⃣ SwiftUI에서 메모리 사용 방식 이해하기SwiftUI에서는 UI가 상태(State)에 따라 자동으로 변경돼요.즉, 우리가 직접 화면을 업데이트할 필요 없이, 상태만 바꾸면 SwiftUI가 알아서 새로운 화면을 그려요.하지만, 잘못된 상태(State) 사용법이나 큰 데이터를 잘..

Swift에서 자주 사용하는 모델 프로토콜 🎯Swift에서 Equatable, Hashable 같은 프로토콜(Protocol) 은 특정 기능을 반드시 구현하도록 강제하는 설계도 같은 역할을 해요.특히 모델(데이터를 담는 구조체나 클래스) 에 많이 쓰이는 프로토콜들을 모아서 정리해 보았어요!🔷 1. Equatable (같은지 비교할 수 있도록 해줌)Equatable을 적용하면 두 개의 값이 같은지(==) 비교할 수 있어요.자동으로 == 연산자가 생성되기 때문에, 코드가 짧아지고 편리해요!📌 예제struct Person: Equatable { let name: String let age: Int}let person1 = Person(name: "Alice", age: 20)let person..

🚀 [SwiftUI] Async/await로 Debounce 적용하기 (AsyncAlgorithms 활용)Swift의 Concurrency 기능이 도입되면서, 우리는 Combine을 덜 사용하고 async/await과 AsyncStream을 더 많이 활용하게 되었습니다.하지만! Combine에서 제공하는 debounce, throttle 같은 기능이 async/await에서는 기본적으로 제공되지 않아요.👉 하지만 AsyncAlgorithms 라이브러리를 사용하면 이 문제를 해결할 수 있습니다! 🎉👉 오늘은 AsyncAlgorithms을 활용하여 SwiftUI에서 debounce를 적용하는 방법을 쉽게 설명해 드릴게요!1️⃣ Debounce란?Debounce(디바운스)란 사용자가 빠르게 입력할 때,..
Swift 6.0 Actors: 멀티스레드 버그 잘가~ 👋멀티스레드 환경에서는 여러 개의 코드가 동시에 같은 데이터를 수정하려고 하면 버그가 발생할 수 있어요.Swift 6.0에서는 Actors를 사용해 이러한 문제(경쟁 상태, 데이터 충돌)를 깔끔하게 해결할 수 있습니다.이제부터 Actors가 무엇인지, 왜 중요한지, 어떻게 사용하면 되는지 쉽게 설명해드릴게요! 🚀1. Actor(액터)란?Actor는 Swift 6.0에서 새롭게 추가된 동시성(Concurrency) 관리 도구입니다.👉 쉽게 말하면 "멀티스레드에서 데이터를 안전하게 보호하는 가드(경비원)" 역할을 합니다.✅ 한 번에 하나의 코드(스레드)만 데이터를 수정할 수 있도록 제한✅ 멀티스레드 환경에서도 데이터가 꼬이지 않도록 보호✅ Disp..
Swift 코드를 애플 스타일로 작성하는 방법📝: Part 2Swift 코드에서 초보자부터 고급 개발자까지 적용할 수 있는 패턴을 배워보겠습니다.1. 변환 함수 대신 초기화(init)를 사용하자✅ Apple은 변환 메서드(toDouble, asDouble)를 사용하지 않고, 초기화(init)를 사용합니다.✅ 이유: Swift의 타입 시스템과 일관성을 유지하며, 타입 변환의 의도를 명확히 표현할 수 있음.📌 Apple 스타일 예제let intValue = 100let doubleValue = Double(intValue) // ✅ 변환을 위한 초기화let floatValue = Float(intValue)let stringValue = String(intValue)let cgFloatValue = CG..