본문 바로가기

Programming

(144)
Swift Concurrency: Task {} vs Task.detached {} Swift Concurrency를 사용할 때 자주 헷갈리는 부분 중 하나가 바로 Task {}와 Task.detached {}의 차이입니다.특히, UI 업데이트나 백그라운드 작업을 처리할 때 어떤 방식을 써야 하는지에 따라 안전성과 취소 동작에서 큰 차이가 발생합니다.이번 글에서는 Stackademic 블로그의 "Task vs Task.detached in Swift: The Concurrency Trap" 글을 바탕으로 내용을 정리하고, 추가 예제를 곁들여 설명합니다.핵심 요약Task {}구조적(structured), 현재 context 상속 (actor, priority, task-local)부모 작업이 취소되면 함께 취소됨UI/actor-isolated 컨텍스트에 안전Task.detached {}비..
Swift struct 배열에서 내부 값 수정하기 우리가 모르고 쓰는 writeback 최적화Swift에서 struct는 값 타입이라, 배열에 담긴 struct를 수정하려면 "복사 → 수정 → 재할당"이 기본입니다.하지만 가끔 이렇게 코드를 짰는데도… 잘 됩니다?users[index].profile.updateNickname("newName")분명 struct인데도 내부 값을 이렇게 바꿨는데 잘 된다?어떻게 가능한 걸까요?struct User { var id: Int var profile: Profile}struct Profile { var nickname: String mutating func updateNickname(_ newNickname: String) { nickname = newNickname }}그리..
Swift OptionSet으로 깔끔한 옵션 관리하기 OptionSet이란?OptionSet은 Swift에서 비트마스크(Bitmask) 를 쉽게 다룰 수 있도록 도와주는 프로토콜입니다.여러 개의 옵션을 조합하여 사용할 때 유용하며, Set처럼 동작하지만 내부적으로는 비트 연산을 활용하여 최적화됩니다.예를 들어, 파일 권한(읽기, 쓰기, 실행)을 다룰 때 OptionSet을 사용하면 코드가 더 깔끔하고 효율적으로 작성됩니다.OptionSet 사용 예제아래는 파일 접근 권한을 OptionSet으로 정의한 예제입니다.struct FilePermissions: OptionSet { let rawValue: Int static let read = FilePermissions(rawValue: 1 OptionSet을 사용하면 좋은 경우여러 개의 옵션을..
Actor가 처음이라고요? Swift의 Actor는 5.5 버전에 소개됐는데요그럼에도 불구하고 아직은 낯선게 사실입니다.Swift6가 돼서야 본격적으로 사용가능하도록 지원하고 있는데요Actor를 처음 접하시는 분들에 대한 두개의 블로그를 소개합니다.https://www.avanderlee.com/swift/actors/https://www.avanderlee.com/swift/mainactor-dispatch-main-thread/
iOS Framework에서 전처리문(#ifdef) 등록하기 iOS Framework 제작 시 전처리문(Preprocessor)을 통해서 빌드시점에 다른 결과를 내고 싶을때가 있습니다.대표적인 것이 #if DEBUG 입니다.#if DEBUGprint("is debug mode")#elseprint("release mode")#endif디버그 모드는 Xcode 생성 시 전처리문에 이미 등록돼 있기 때문에 별다른 처리 없이도 바로 사용가능합니다.그렇다면 별도의 전처리문을 등록하고 싶을때는 어떻게 처리해야야 할까요아래와 같은 방법을 통해 설정 할 수 있습니다.Framework를 생성Build Settings로 이동Preprocessor Macros > 전처리문 입력여기서는 MY_FLAG라는 이름으로 등록했습니다.만약 DEBUG모드에서만 필요하면 DEBUG에만 추가, 만..
swift 주석 관련 공식 문서 (Swift Markup Formatting Reference) https://developer.apple.com/library/archive/documentation/Xcode/Reference/xcode_markup_formatting_ref/index.html#//apple_ref/doc/uid/TP40016497-CH2-SW1
M1 Mac에서 cocoapods 설치하는 방법 설치방법 sudo gem install -n /usr/local/bin cocoapods 특정버전을 설치하고 싶은 경우 sudo gem install -n /usr/local/bin cocoapods -v 1.11.3 삭제 방법 sudo gem uninstall -n /usr/local/bin cocoapods
MVVM+Router https://github.com/alinradut/MVVMR GitHub - alinradut/MVVMR: MVVM + Router implementation for Swift. MVVM + Router implementation for Swift. Contribute to alinradut/MVVMR development by creating an account on GitHub. github.com

반응형