목록iOS (49)
BIBI BLOG

🔍 Swift 문자열 포함 여부 확인 – contains 사용법과 주의할 점(How to use Swift Contains) Swift에서 문자열 안에 특정 단어가 포함되었는지 확인하고 싶을 때 가장 많이 사용하는 메서드는 바로 contains(_:) 입니다.하지만 문자열, 배열, 비교 방향에 따라 결과가 달라질 수 있습니다. 예시를 보면서 확인해주세요. :)✅ 기본 사용법: String.containslet url = "https://www.example.com/product/12345/detail"let keyword = "example"if url.contains(keyword) { print("도메인이 포함됨 ✅")}출력: 도메인이 포함됨 ✅contains는 문자열 안에 특정 부분 문자열이..
1. self 란?정의: self는 현재 인스턴스(객체) 자신을 가리키는 키워드입니다.언제 사용하나요?: 클래스나 구조체 안에서 자기 자신의 프로퍼티나 함수를 부를 때 사용합니다.예시class Person { var name: String init(name: String) { // 이니셜라이저에서 매개변수와 프로퍼티 이름이 같을 때 구분하기 위해 사용합니다. self.name = name } func sayHello() { // 자신의 name 프로퍼티를 사용합니다. print("안녕하세요, 저는 \(self.name)입니다.") }}let student = Person(name: "민수")student.sayHello()// ..

1. 메모리 관리 최적화메모리를 잘못 관리하면 앱이 느려지거나 꺼질 수 있습니다.Swift의 ARC(Automatic Reference Counting)를 통해 대부분 자동으로 처리되지만, 강한 참조(strong reference) 때문에 객체가 계속 남아 있으면 문제가 생길 수 있습니다.[weak self] 또는 [unowned self] 사용: 클로저(closure) 안에서 자기 자신(self)을 강한 참조로 잡지 않도록 관리Instruments(Xcode → Product → Profile)에서 Leaks나 Allocations 분석: 누수(leak)를 쉽게 찾을 수 있음사용하지 않는 객체는 빨리 해제: 더 이상 필요 없다면 nil로 만들어주거나, 구조 상 자동 해제되도록 설계2. 지연 로딩(Laz..

SwiftUI 에서 “Modifying state during view update” 경고가 뜨는 이유와 해결 방법SwiftUI를 사용하다 보면, “Modifying state during view update, this will cause undefined behavior”라는 경고를 마주칠 수 있다. 이 경고가 뜻하는 바는, 화면이 그려지는 중에 상태(@State, @ObservedObject 등)를 직접 수정하면 SwiftUI 내부에서 렌더링 재진입이 발생해 예측 불가능한 동작이 일어날 수 있다는 것이다.원인SwiftUI는 상태 변화 → 뷰 다시 그림 → (필요시) 또 상태 변화 구조를 가진다.만약 “뷰가 그려지는 바로 그 시점”에 또 상태를 건드리면, 아직 완료되지 않은 렌더링이 중첩 호출될 가능..

withCheckedThrowingContinuation는 Swift 5.5+에서 제공하는 Swift Concurrency API 중 하나로,“콜백(callback) 기반 비동기 함수”를 async/await로 변환하기 위한 도우미입니다.쉽게 말해, “completion handler” 스타일 코드를 async throws 함수로 래핑해 주는 역할이죠.1. 사용하는 이유Swift의 await 문법은 비동기를 직관적으로 처리할 수 있게 만듭니다.하지만 기존에는 많은 함수들이 콜백(completion block)을 사용해 결과를 반환합니다.이런 콜백 함수를 async 함수로 바꾸려면, “코드가 완료되는 시점”에 await 체계를 알려줘야 하는데,그 과정을 withCheckedThrowingContinuati..

unexpectedly did not find the new dependency in the package graph:sourceControl(identity:jose-swift, location: SwiftPM.SPMPackageDependency.Source.... Error 해결방법(swift에서 jose import하는 방법) 원인해당 에러는 SwiftPM이 “jose-swift”라는 의존성을 찾지 못해, 패키지 그래프에 추가하지 못했다는 뜻입니다. 보통 아래 상황에서 발생합니다:URL 오타: 실제 레포지토리가 airsidemobile/JOSESwift.git인데, 오타나 대소문자 차이로 jose-swift를 적었을 때Package 이름과 제품(Product) 이름 불일치: SPM에서 “JOSES..

Swift의 Result 타입 살펴보기🏋️♀️Swift에서 Result 타입은 성공(.success)과 실패(.failure)를 간단히 표현할 수 있어, 네트워크 에러나 비동기 작업 등에서 자주 활용됩니다.하지만 보통 “결과 + 에러” 정도만 쓰고 넘기는 경우가 많습니다.이 글에서는 Result의 여러 기능을 좀 더 자세히 살펴보겠습니다.1. Throwing 함수를 Result로 바꾸기 (Result(catching:))일반적으로 Swift에서 throws 함수를 호출할 때,do-try-catch 구조를 여러 곳에서 중복으로 써야 하는 문제가 생길 수 있습니다.// 기존: 함수를 직접 try-catch로 호출func complexDataProcessing() throws -> ProcessedData..

[Swift] SOLID 원칙 살펴보기iOS 앱 개발을 진행할 때, 코드가 복잡해지고 유지보수가 어려워지는 상황을 피하려면 SOLID 원칙을 도입하면 좋습니다.이 문서에서는 SRP, OCP, LSP, ISP, DIP 다섯 가지 SOLID 원칙을 간단한 예시와 함께 살펴보겠습니다.1. 단일 책임 원칙 (SRP: Single Responsibility Principle)"클래스는 단 하나의 책임만 가져야 한다."한 클래스가 여러 역할을 동시에 맡고 있으면, 수정이 생길 때마다 코드가 불안정해집니다.예시: 병원 관리 시스템❌ 잘못된 예시class HospitalManagement { func registerPatient() { ... } func generateBill() { ... } fun..