목록iOS (52)
BIBI BLOG

Swift 5.9부터 도입된 새로운 테스트 프레임워크 Swift Testing은 간결하면서도 강력한 기능들을 제공합니다. 기존의 XCTest보다 훨씬 읽기 쉽고, Swift 문법과도 잘 어울립니다. 실제로 사용 가능한 예제 코드를 중심으로 소개하겠습니다.주요 기능@Test: 어디서든 테스트 함수 정의 가능@Suite: 테스트를 구조적으로 그룹화async + throws: 비동기 및 오류 테스트 지원Parameterized Tests: 입력값 따라 테스트 반복 실행병렬 실행: 테스트를 빠르게 완료tags, metadata: 테스트 분류 및 메타정보 붙이기예제 가이드1. 기본 테스트 작성import Testing@Suite struct BasicMathTests { @Test func testAddit..

2025년 WWDC와 Google IO의 발표 주요 내용을 정리하였습니다 : )Google IO구분Google I/O주요 발표/강조점AI를 통한 앱 경험 향상 및 개발 생산성 증대다양한 기기 생태계 확장비즈니스 성장 지원핵심 AI 기술Gemini 2.5 및 Gemma 모델 발표ML Kit GenAI API를 통한 앱 내 요약, 교정, 이미지 설명 기능Gemini in Android Studio (Image to Code, AI 에이전트)AI Overviews 200개국 이상, AI Mode 미국 기본 적용Jules Coding AgentWorkspace AI 기능 강화(Gmail, Meet, Vids)TPU Ironwood 성능 10배 향상디자인/플랫폼 통합Material 3 Expressive(감성적 ..

SwiftUI로 앱을 만들 때, Webview를 띄우는 방식이 귀찮고 복잡했어요. iOS 26부터는 SwiftUI에서 WebView를 아주 쉽게 쓸 수 있게 바뀌었습니다!이 글에서는 WebView의 변화된 코드와 최신 방식으로 웹을 앱에 넣는 법을 쉽고 자세히 알려드리겠습니다. iOS26이전 방식: WKWebView 래핑(감싸기)iOS 26 이전에는 SwiftUI에 웹뷰가 없었어요.그래서 UIKit의 WKWebView를 UIViewRepresentable로 감싸서 써야 했습니다.import SwiftUIimport WebKitstruct WebView: UIViewRepresentable { let url: URL func makeUIView(context: Context) -> WKWebV..

🔍 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..