본문 바로가기

전체 글

(184)
웹 디자이너를 위한 JPG와 PNG 활용 가이드 안녕하세요.웹 디자인 작업 시 이미지 파일 형식 선택에 대한 고민을 해결해 드리고자 합니다.웹 디자이너가 자주 사용하는 JPG와 PNG는 각각의 명확한 장단점이 있으며, 이를 이해하면 작업 효율성을 크게 높일 수 있습니다.본 가이드를 통해 두 파일 형식의 차이점과 올바른 활용 기준을 제시해 드립니다. JPG와 PNG, 주요 차이점 비교분류JPG (Joint Photographic Experts Group)PNG (Portable Network Graphics)압축 방식손실 압축 (Lossy Compression)입니다.무손실 압축 (Lossless Compression)입니다.화질 유지반복 저장 시 화질이 저하될 수 있습니다.원본 화질을 완벽하게 유지합니다.파일 용량PNG 대비 파일 용량이 작습니다.JP..
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

반응형