루피 님의 블로그
close
프로필 사진

루피 님의 블로그

github: @kimsangjunzzang

  • 분류 전체보기 (127)
    • iOS (65)
      • Swift (36)
      • UIKit (9)
      • SwiftUI (8)
      • RxSwift (12)
    • FE (8)
      • 모던 자바스크립트 (3)
      • HTML (5)
    • CS (15)
    • Algorithm (20)
    • 트러블 슈팅 (5)
    • 그 외 정리 (2)
    • 대외활동 & 회고록 (8)
    • 바로 안 나오면 모르는거다 (4)
  • 홈
  • 태그
  • 방명록
[Swift] RunLoop 와 GCD

[Swift] RunLoop 와 GCD

안녕하세요, 루피입니다. 개발을 하시면서, DispatchQueue.global().async라는 코드를 한 번쯤은 사용해 보셨을 겁니다. 우리는 이 코드를 통해 무거운 작업을 백그라운드 스레드로 보내 UI 프리징을 막곤 하죠. 하지만 혹시 이런 질문을 던져본 적 있으신가요?DispatchQueue/global() 은 정확히 무엇일까?왜 우리는 Thread.start()처럼 스레드를 직접 만들지 않을까?시스템은 우리가 던져준 작업을 어떻게 처리하고 있는 걸까?오늘은 이러한 숨겨진 내부 동작을 공부해 보면서, iOS 동시성의 가장 낮은 곳에 있는 RunLoop와 Thread Pool의 개념을 이해하고, 이를 통해 우리가 자주 사용하는 GCD와 OperationQueue가 왜 효율적인 방법인지에 대해 한번 ..

  • format_list_bulleted iOS/Swift
  • · 2025. 7. 28.
[Swift] 클로저(Closure)

[Swift] 클로저(Closure)

안녕하세요,루피입니다. 오늘은 공식문서를 바탕으로 클로저에 대해 다시 한번 정리하는 시간을 가져보도록 하겠습니다. 바로 시작합니다.클로저와 함수의 관계진행하기에 앞서 우선 클로저와 함수의 관계를 짚고 넘어가도록 하겠습니다. Swift의 공식 문서에 따르면, 함수는 사실 이름이 있는 클로저의 한 종류입니다. 즉, 클로저가 더 큰 개념이고 함수는 그 안에 포함된 특별한 형태인 셈이죠.공통점특정 작업을 수행하는 코드 블록입니다.매개변수를 받고 결과값을 반환할 수 있습니다.주변 컨텍스트의 변수나 상수를 캡처 할 수 있습니다.차이점 함수클로저이름항상 이름이 있음이름이 없는 형태가 일반적키워드func 키워드로 명시적 선언{ } 를 사용한 간결한 문법활용독립적인 기능 단위로 사용다른 함수의 인자, 변수 할당 등 유연..

  • format_list_bulleted iOS/Swift
  • · 2025. 7. 24.
[ Swift ] Identifiable

[ Swift ] Identifiable

안녕하세요, 루피입니다. SwiftUI로 개발하다 보면 List나 ForEach를 사용하면서 Identifiable이라는 프로토콜을 마주치는 순간이 꼭 찾아옵니다. 공식 문서를 봐도 그 의미가 선뜻 와닿지 않아 고개를 갸우뚱했던 경험, 다들 한 번쯤 있으실 텐데요. 오늘은 Identifiable이 정확히 무엇인지, 왜 중요한지, 그리고 다양한 상황에 맞춰 ID를 어떻게 설계해야 하는지, 정리하는 시간을 갖겠습니다. 바로 시작합니다.1. Identifiable이란?protocol Identifiable { associatedtype ID : Hashable var id: Self.ID { get }}먼저 Apple 공식 문서의 정의를 살펴보죠.안정적인 식별자를 가진 엔티티의 값을 보유하는 인스턴..

  • format_list_bulleted iOS/Swift
  • · 2025. 7. 12.

[CS] Swift로 HashMap 구현하기

안녕하세요, 루피입니다. 오늘은 자료구조 중 HashMap의 내부 동작을 더 깊이 이해하기 위해, Swift로 직접 구현한 과정을 공유하려 합니다. 바로 시작합니다.1. Map과 HashMap이란?Map: Key와 Value의 쌍으로 데이터를 저장하는 추상적인 자료구조입니다. HashMap: Map이라는 추상적인 개념을 해시 테이블을 사용해 실제로 구현한 구체적인 자료구조입니다.2. HashMap의 특징빠른 속도: 키를 해시 함수로 변환해 내부 배열(버킷)의 인덱스를 계산하므로, 데이터 검색/삽입/삭제가 평균적으로 O(1)의 시간 복잡도를 가집니다.순서 미보장: 데이터를 저장한 순서와 조회하는 순서가 다를 수 있습니다.Key의 유일성: Key의 중복을 허용하지 않습니다. 동일한 Key로 새로운 값을 저장..

  • format_list_bulleted CS
  • · 2025. 7. 11.
[Swift] 고차함수

[Swift] 고차함수

안녕하세요, 루피입니다. 오늘은 Swift 고차함수에 대해 정리해 보도록 하겠습니다. 바로 시작합니다.1. 왜 고차함수를 정리할까?블로그 글이 100개가 넘어서 고차함수를 정리하는 과정이 앞뒤가 맞지 않다고 생각합니다..ㅎㅎ. 하지만, 아 진짜 이번 기회에 고차함수를 꼭 정리하고 넘어가야겠어!!라고 생각을 갖게 된 계기가 생겨났습니다!! 바로, Swift로 코딩테스트를 보았기 때문입니다. 저는 원래 학교에서 1학년 때부터 사용했던 C++ 로 코딩테스트를 준비했었는데요, 이번 기회에 Swift로 준비하면서, 아 내가 함수형 언어, Swift의 특징과 강력함을 글로 알고 있었구나..라는 생각이 들었습니다. 더 나아가 내가 Swift를 사용하긴 했지만, 전혀 Swift스럽지 않은 코드를 사용하고 있어구나..라..

  • format_list_bulleted iOS/Swift
  • · 2025. 7. 7.
[Swift] @autoclosure

[Swift] @autoclosure

안녕하세요, 루피입니다. 오늘은 클로저를 공부하다 알게된 @autoclosure에 대해 정리 해보려합니다. @autoclosure에 대해 단순히 { } 를 생략하게 해주는 코드를 깔끔하게 만들어주는 Syntax Sugar로만 알고 계신분들도 많을텐데요. 이번시간에는 @autoclosure의 진짜 강력함인 실행 지연에 대해 좀 더 집중하도록 하겠습니다. 바로 시작합니다.문제의 시작: "굳이 지금 계산해야 할까?"@autoclosure를 이해하려면 먼저 이것이 해결하려는 문제를 알아야 합니다. 다음은 간단한 로그를 출력하는 함수입니다.// 조건이 참일 때만 메시지를 출력하는 함수func logIfTrue(_ condition: Bool, _ message: String) { if condition { ..

  • format_list_bulleted iOS/Swift
  • · 2025. 6. 11.
[Swift] Concurrency - Collections & Parallelization (2)

[Swift] Concurrency - Collections & Parallelization (2)

안녕하세요, 루피입니다. 이번 포스팅은 Parallelization 2번째 시간입니다. 오늘은 Swift의 내장 동시성 시스템을 활용하여 데이터 변환 작업을 효율적으로 수행하는 방법에 대해 알아보겠습니다. 특히 비동기 및 병렬 처리와 결합하는 방법에 대해 정리 해보려합니다. 바로 시작합니다.왜 비동기 컬렉션 처리가 필요한가?우리가 일상적으로 작성하는 코드의 대부분은 본질적으로 일련의 데이터 변환으로 구성됩니다. 네트워크 응답, 사용자 입력, 데이터베이스 쿼리 등 다양한 형태의 데이터를 받아서 로직을 실행하고, 최종적으로 저장하거나 사용자에게 표시하는 과정이죠.하지만 기존의 동기적 처리 방식은 성능상 한계가 있습니다.// 기존 동기 처리 - 순차적 실행class FavoritesManager { fu..

  • format_list_bulleted iOS/Swift
  • · 2025. 6. 9.
[Swift] Concurrency - Collections & Parallelization (1)

[Swift] Concurrency - Collections & Parallelization (1)

안녕하세요, 루피입니다.이번 포스팅은 지난 Task에 대한 포스팅을 마무리하고 새롭게 시작하는 Parallelization을 정리하려합니다. 벙렬 작업은 주로 컬렉션 내에서 이루어지기에 제목을 위와 같이 만들었습니다. 바로 시작합니다.Swift의 동시성 시스템을 사용하여 여러 작업을 병렬로 실행하기Swift의 내장 동시성 시스템의 이점 중 하나는 여러 비동기 작업을 병렬로 수행하는 것을 훨씬 쉽게 만들어준다는 것입니다. 이는 별도의 부분으로 나눌 수 있는 작업의 속도를 크게 향상시킬 수 있습니다.이 글에서는 이를 수행하는 몇 가지 다른 방법과 각 기법이 특히 유용한 경우를 살펴보겠습니다.동시성(Concurrency) vs 비동기(Parallelism)우선 동시성과 비동기의 차이를 먼저 확인하고 넘어가겠..

  • format_list_bulleted iOS/Swift
  • · 2025. 6. 9.
[Swift] Concurrency - Task(3)

[Swift] Concurrency - Task(3)

안녕하세요, 루피입니다.이번 포스팅은 Swift Concurrency 3번째 시간입니다. 오늘은 Task를 이용한 메모리관리에 대한 정리를 해보겠습니다. 바로 시작합니다.async/await 사용 시 메모리 관리앱의 메모리를 관리하는 것은 비동기 코드의 맥락에서 특히 까다로운 일입니다. 다양한 객체와 값들이 비동기 호출을 수행하고 처리하기 위해 시간에 걸쳐 캡처되고 유지되어야 하기 때문입니다. Swift의 비교적 새로운 async/await 구문은 많은 종류의 비동기 작업을 더 쉽게 작성할 수 있게 해주지만, 이러한 비동기 코드에 관련된 다양한 작업과 객체들의 메모리를 관리할 때는 여전히 상당히 주의해야 합니다.암시적 캡처async/await의 흥미로운 측면 중 하나는 비동기 코드가 실행되는 동안 객체와..

  • format_list_bulleted iOS/Swift
  • · 2025. 6. 8.
  • navigate_before
  • 1
  • 2
  • 3
  • 4
  • 5
  • navigate_next
공지사항
전체 카테고리
  • 분류 전체보기 (127)
    • iOS (65)
      • Swift (36)
      • UIKit (9)
      • SwiftUI (8)
      • RxSwift (12)
    • FE (8)
      • 모던 자바스크립트 (3)
      • HTML (5)
    • CS (15)
    • Algorithm (20)
    • 트러블 슈팅 (5)
    • 그 외 정리 (2)
    • 대외활동 & 회고록 (8)
    • 바로 안 나오면 모르는거다 (4)
인기 글
전체 방문자
오늘
어제
Copyright © kimsangjunzzang 모든 권리 보유.
SKIN: Copyright © 쭈미로운 생활 All rights reserved. Designed by JJuum.
and Current skin "dev-roo" is modified by Jin.

티스토리툴바