뭐라도하는봉
close
프로필 배경
프로필 로고

뭐라도하는봉

  • 분류 전체보기 (55)
    • Retrospect (15)
    • I'm Domain (1)
    • I'm Tech (0)
    • Personal Study (0)
    • Apple Developer Acadamy (0)
    • iOS (38)
      • Swift (19)
      • SwiftUI (4)
      • UIKit (14)
    • Developer (1)
    • CS (0)
  • 홈
  • 태그
  • 방명록
[iOS/SwiftUI] ForEach 반복문의 \.id는 무슨 의미일까? - SwiftUI의 Identity

[iOS/SwiftUI] ForEach 반복문의 \.id는 무슨 의미일까? - SwiftUI의 Identity

SwiftUI에서 ForEach를 통해 반복되는 UI를 구성할때 `id: \.self`나 `id: \.id`와 같은 코드를 본 적이 있을것이다.나는 이 코드의 의미에 대해 궁금해졌다. 이번 글에서는 SwiftUI의 Identity(동일성)에 대해 알아보고, 다음 글에서는 KeyPath에 대해 알아보도록 하겠다.SwiftUI의 IdentitySwiftUI가 뷰를 그리는 방식은 다음과 같다.`@State`등의 Source of Truth가 되는 프로퍼티가 변화하면 body 프로퍼티가 다시 렌더링 되면서 View가 다시 그려진다. 즉, `@State` 변수의 값이 변경되면 뷰가 해당 값을 반영한 형태로 다시 그려지는 것이다.그렇다면, 어떻게 같고 다른것을 구분할 수 있는 것일까? 이 때 등장하는 개념이 Ide..

  • format_list_bulleted iOS/SwiftUI
  • · 2025. 4. 19.
  • textsms
[iOS/Swift] Mock과 Stup은 다르다고? - Test Double

[iOS/Swift] Mock과 Stup은 다르다고? - Test Double

지난 글에 이어서 Swift의 Test에 대해 더 알아보겠다. 테스트에서 가장 중요한 점은 몇 번의 테스트를 하든 동일한 결과가 나와야 한다는 점이다.그런데 네트워크 통신 메서드의 경우 서버의 상황에 의해서 테스트가 실패할 가능성이 생긴다.즉, 네트워크 통신 테스트의 유의점은 다음과 같다.네트워크 통신이 잘 되는 상황에 대해서만 일관적인 결과를 얻을 수 있다.통신에 문제가 있는 경우 결과가 달라질 수 있다. 즉, 외부 환경에 영향을 받는다.네트워크 통신과 무관한 상태로 테스트 코드를 작성하는게 중요하다.이러한 특징 때문에 네트워크 통신을 추상화하고, 실제 데이터가 아닌 Mock 데이터로 테스트를 하는게 중요하다. 이때 사용하는게 Test Double이라는 객체이다.Test Double이란 실제 객체 대신..

  • format_list_bulleted iOS/Swift
  • · 2025. 4. 3.
  • textsms
[iOS/Swift] Swift의 UnitTest 살펴보기

[iOS/Swift] Swift의 UnitTest 살펴보기

앱을 개발하다보면 UI에 문제는 없는지, 혹은 특정 기능이 잘 작동하는지 검증을 해야 한다.규모가 작은 앱이라면 기기에 빌드해서 전체 기능을 직접 테스트 해볼 수는 있..겠으나,기능이나 화면이 너무 많은 경우나, 여기에 작은 기능 하나만 추가되었을 때 A부터 Z까지 전부 다 직접 테스트하는것은 비효율적일 것이다. 그래서 Swfit는 XCTest(혹은 SwiftTesting)를 통해 UI/기능을 테스트할 수 있는 프레임워크를 제공한다. 이번 글에서는 Test에 대한 소개와 함께 Testable한 코드에 대해서 알아보도록 하겠다. Test 알아보기먼저 Test의 목적과 종류에 대해 알아보겠다.Test는 말 그대로 "앱을 사용함에 있어 문제가 없는지를 확인"하는 과정이다.이러한 개념은 당연히 iOS에만 있는 ..

  • format_list_bulleted iOS/Swift
  • · 2025. 3. 31.
  • textsms
[iOS/Swift] Kingfisher를 쓰지 않고 이미지 캐싱 구현하기 - NSCache

[iOS/Swift] Kingfisher를 쓰지 않고 이미지 캐싱 구현하기 - NSCache

네트워크 통신을 통해 이미지를 받아와야 하는 경우지금까지는 Kingfisher라는 라이브러리를 사용해 해당 이미지를 처리했었다. 그러던 와중에 외부 라이브러리를 쓰지 않고, 이미지를 로드하고 캐싱하는 기능을 구현하고 싶었다. 이번 글에서는 이미지 캐싱에 대해 알아보고, MemoryCash와 DiskCashe를 실제로 구현해보도록 하겠다.이미지 캐싱이란?먼저 캐시라는 개념에 대해 알아보도록 하자.캐시는 컴퓨터 과학 에서 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다.캐시에 데이터를 미리 복사해 놓으면 계산이나 접근 시간없이 더 빠른 속도로 데이터에 접근할 수 있다.즉, 캐싱이란 데이터를 미리 캐시라는 별도에 장소에 복사해놓고, 이후에 접근할 때 더 빠른속도로 접근할 수 있게 하는 것을 말한다. 예를..

  • format_list_bulleted iOS/Swift
  • · 2025. 3. 25.
  • textsms
[iOS/Swift] Combine에서 cancellables가 inout파라미터인 이유

[iOS/Swift] Combine에서 cancellables가 inout파라미터인 이유

Combine을 살펴보면 RxSwift에서 용어만 바뀐 느낌이 든다.예를 들어RxSwift에서의 Observable은 Combine에서 Publisher이고,Observer는 SubscriberDisposable은 AnyCancellable...이런 식으로 말이다. 물론 더 깊이 들어가면,RxSwift는 class기반이고, Combine은 protocol 기반,Combine에서는 에러 대응을 항상 해줘야 함.. 등차이점은 더 있을 수 있겠으나, 대부분 RxSwift와 1:1로 대응해서 생각하면 이해하기는 어렵지 않았다. 그런데, 그 중 궁금증이 생긴 부분이 있었다.RxSwift에서의 `.disposed(by: disposeBag)` 부분에 해당하는 코드가 Combine에서는 `.store(in: &can..

  • format_list_bulleted iOS/Swift
  • · 2025. 3. 23.
  • textsms
[iOS/Swift] DI와 DIP는 다르다! - 의존성 주입 알아보기

[iOS/Swift] DI와 DIP는 다르다! - 의존성 주입 알아보기

Swift의 의존성 주입과 관련해서 DI와 DIP라는 용어를 듣게 될 것이다.처음에는 DI나 DIP나 그냥 의존성 주입을 하는 애구나.. 정도로만 알고있었다.그런데, 좀 더 자세히 알아보니 이 둘은 (당연히) 서로 다른 개념이며, 의존성 주입을 해야하는 이유에 대해서도 생각해보게 되었다. 이번 글에서는 DI와 DIP에 대해 알아보도록 하겠다. DI (Dependency Injection)DI는 Dependency Injection의 약어로, 의존성 주입을 뜻한다.먼저 DI가 필요한 상황과, 그 방법에 대해 알아보자. A클래스가 B클래스에 의존하는 상황이라면, B클래스에서 변화가 일어날 때 A클래스에까지 영향을 미치는 상황이 있다./*Guest 클래스는 A_Restaurant 에, A_Restaurant는..

  • format_list_bulleted iOS/Swift
  • · 2025. 3. 18.
  • textsms
  • navigate_before
  • 1
  • 2
  • 3
  • 4
  • 5
  • navigate_next
공지사항
전체 카테고리
  • 분류 전체보기 (55)
    • Retrospect (15)
    • I'm Domain (1)
    • I'm Tech (0)
    • Personal Study (0)
    • Apple Developer Acadamy (0)
    • iOS (38)
      • Swift (19)
      • SwiftUI (4)
      • UIKit (14)
    • Developer (1)
    • CS (0)
최근 글
인기 글
최근 댓글
태그
  • #MC1
  • #ios
  • #UIKit
  • #MC2
  • #RxSwift
  • #SwiftUI
  • #MVVM
  • #Apple Developer Academy @ POSTECH
  • #Swift
  • #애플 디벨로퍼 아카데미
전체 방문자
오늘
어제
전체
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바