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

루피 님의 블로그

github: @kimsangjunzzang

  • 분류 전체보기 (126)
    • iOS (65)
      • Swift (36)
      • UIKit (9)
      • SwiftUI (8)
      • RxSwift (12)
    • FE (8)
      • 모던 자바스크립트 (3)
      • HTML (5)
    • CS (14)
    • Algorithm (20)
    • 트러블 슈팅 (5)
    • 그 외 정리 (2)
    • 대외활동 & 회고록 (5)
    • 일간 회고록(TIL) (3)
    • 바로 안 나오면 모르는거다 (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] iOS는 메모리를 어떻게 관리 할까?

안녕하세요, 루피입니다. 오늘은 iOS는 어떻게 메모리를 관리할까? 라는 주제로 글을 작성 해보겠습니다. 지난 글 중 ARC와 관련된 글도 참고해서 보시면 좋을거 같습니다. 바로 시작합니다.1. iOS 메모리 관리의 특징iOS의 메모리 관리는 모바일 환경의 제약을 고려하여 설계되었습니다.배터리 수명 최적화: 디스크 I/O를 최소화하여 전력 소모를 줄임플래시 메모리 보호: 과도한 쓰기 작업으로 인한 스토리지 수명 단축 방지사용자 경험 우선: 앱 응답성을 해치지 않는 선에서 메모리 관리2. ARC (Automatic Reference Counting)iOS 개발자가 C언어처럼 malloc과 free를 직접 호출하지 않아도 되는 이유입니다.1) ARC의 동작 원리ARC는 컴파일 타임에 코드를 분석하여, 객체를..

  • format_list_bulleted iOS/Swift
  • · 2025. 7. 21.
[ 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.
[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] Value type & Reference type

[Swift] Value type & Reference type

안녕하세요, 루피입니다. 오늘은 값과 참조에 관해 정리해보는 시간을 가져보려합니다. 가장 기본적인 내용이지만, 가장 중요한 개념이기에 이번 기회에 제대로 짚고 넘어가면 좋을거 같습니다. 바로 시작합니다.값 타입 vs 참조 타입값 타입은 데이터를 전달할 때 값을 복사 해서 전달합니다.예를 들어, 구조체 인스턴스를 다른 변수에 할당하면, 전혀 별개의 인스턴스가 생성되어 원본과는 완전히 독립적으로 작동하게 됩니다.참조 타입은 값을 전달하는 것이 아니라 그 값이 저장되어 있는 메모리 주소 를 전달합니다. 그래서 클래스 인스턴스를 다른 변수에 할당하더라도 실제로는 같은 객체를 가리키게 됩니다. 즉, 둘 중 하나에서 값을 바꾸면 나머지에도 영향을 끼치게 되는 것이죠.Swift 의 타입Swift에서 모든 타입은 크게..

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

티스토리툴바