iOS

GCD Sync, Async, Serial, Concurrent 조합해보기
GCD를 활용해 비동기 코드를 작성하며 자주 헷갈리는 sync, async 그리고 Serial, Concurrent를 조합했을 때 어떻게 동작하는지 그림과 함께 정리해보려고 합니다. GCD가 무엇인지는 이 곳에서 확인 가능합니다!Serial + Syncvar numbers = [0, 1, 2, 3, 4] let dispatchQueue = DispatchQueue(label: "custom") print("Serial + Sync 실행결과") (0..

캐시 데이터 용량 표시 방식 개선하기: ByteFormatter
캐시 데이터 용량 표시 방식 개선하기: ByteFormatter프로젝트를 진행하며 이미지 캐시를 제거하는 기능을 개발하게 되었는데요.캐시 데이터 용량을 어떻게 표기할까 고민하다 너무 작지도 크지도 않도록 MB 단위로 표현하기로 정하고 byte를 1024 로 2번 나누어 MB로 변환하여 표기했습니다.하지만 코드리뷰를 진행하며 팀원분께 더 나은 방식을 배웠는데요.까먹지 않도록 정리해두려고 합니다!왜 ByteFormatter를 사용해야 할까?기존 방식에서는 용량을 항상 MB 단위로 표시했습니다. 이렇게 되면 GB 이상의 큰 용량을 표현하거나, KB나 Byte 단위의 작은 용량일 때는 어색해 보일 수 있습니다. 이를 개선하기 위해 ByteFormatter를 사용하면 Byte, KB, MB, GB 등 적절한 단위..

GCD 공식문서 읽고 정리하기
이 글은 공식문서를 번역해 나만의 언어로 작성한 글입니다.의역이나 오역이 있을 수 있으니 조심하세요! 😨개요GCD(Grand Central Dispatch)라고도 알려진 Dispatch는 macOS, iOS, watchOS 및 tvOS의 멀티코어 하드웨어에서 동시 코드 실행을 지원하는 체계적이고 포괄적인 개선을 제공하는 언어 기능, 런타임 라이브러리 및 시스템 향상 기능을 포함합니다.BSD 하위 시스템, Core Foundation 및 Cocoa API는 모두 이러한 향상된 기능을 사용하여 시스템과 애플리케이션을 보다 빠르고 효율적으로 실행하고 응답성을 향상시키도록 확장되었습니다.컴퓨팅 코어 수가 다른 여러 컴퓨터나 여러 애플리케이션이 경쟁하는 환경에서 단일 애플리케이션이 여러 개의 코어를 효과적으로 ..

Swift 6.0 접근제어자 Access Control
우선 우리가 잘 알고 있듯이 swift의 접근제어자는 다음과 같이 6개가 있습니다. 5개라고 알고 있는 사람도 많겠지만, Swift 5.9 부터 package 접근제어자가 추가되어 6개가 되었습니다.Swift는 코드 내의 엔티티에 대해 6가지 다른 액세스 수준을 제공합니다. 이러한 액세스 수준은 엔티티가 정의된 소스 파일, 소스 파일이 속한 모듈 및 모듈이 속한 패키지와 관련이 있습니다.접근 제어자open: 가장 높은 수준의 접근 제어자. 다른 모듈에서도 접근, 서브클래싱, 오버라이딩 가능// 모듈: ModuleAopen class Animal { open func bark() { print("으르렁") }}// 모듈: ModuleBclass Cat: Animal { over..

Swift 메모리 관점에서의 Image
목차이미지이미지 처리 프로세스문제점이미지 리사이징다운 샘플링ImageI/ONSURL결과이미지가로 2048, 세로 1536 픽셀의 이미지가 있고 이 이미지 파일의 용량은 590KB입니다.하지만 이 이미지가 iOS 앱에서 보여지기 위해 메모리에 올라갈 땐 얼마나 사용될까요?무려 10MB 를 사용하게 됩니다..왜 그런지 알아볼게요이미지 처리 프로세스 이미지는 JPEG으로 압축되어있는 데이터 타입입니다.이 이미지를 렌더링하는 과정은 다음과 같습니다.Load데이터 타입의 이미지를 메모리에 load합니다.Decode메모리의 이미지를 GPU가 읽을 수 있는 형태로 디코딩 합니다.해당 과정에서 JPEG으로 압축된 파일을 압축 해제하며 10MB가 됩니다.Render디코딩된 이미지를 렌더링하여 우리가 볼 수 있게 됩니다..

모듈화란? with Tuist
목차모듈화란?모듈화를 왜 해야할까?모듈화를 하게되면?Tuist매주 아티클 스터디를 진행하면서 이번엔 어떤 주제를 할까 고민하다가 iOS 진영에서 가장 핫한 토픽 중 하나인 모듈화에 대해 이야기하고자 합니다. 파고들면 파고들수록 어려운 주제이지만 이번 포스팅에선 최대한 가볍게 풀어봅시다!모듈화란?모듈(Module)소프트웨어 설계에서 기능단위로 분해하고 추상화되어 재사용 및 공유 가능한 수준으로 만들어진 단위모듈화(Modularization)소프트웨어의 성능을 향상시키거나 시스템의 디버깅, 시험, 통합 및 수정을 용이하도록 하는 소프트웨어 설계 기법모듈화를 왜 해야할까?개발 리소스 증가프로젝트가 성장하면서 개발자가 늘어나고 기능이 많아질수록 코드량이 늘어납니다.클라이언트 개발에서는 개발 과정에서 로컬 빌드를..