뭐라도하는봉
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는 무슨 의미일까? - KeyPath 알아보기

[iOS/SwiftUI] ForEach 반복문의 \.id는 무슨 의미일까? - KeyPath 알아보기

이번 글은 지난 글에 이어서ForEach문의 `\.self`, `\.id`의 의미에 대해 계속 알아보도록 하겠다. Swift의 KeyPath 문법에 대해 알아보자. Key Path 문법이란?KeyPath 문법의 형태를 보면 \.~~ 이런 식으로 작성되어 있는데 이는 컴퓨터에서 특정 경로를 표시할 때 본 적이 있을 것이다. 터미널에서도 특정 폴더로의 경로를 나타날때 백슬래시를 통해 표시하는 것을 볼 수 있다. 이와 마찬가지로 KeyPath는 어떤 특정한 타입이 가진 프로퍼티에 접근할 때 "경로를 통해서 접근"하는 것을 표현하는 방식이라고 볼 수 있다. 예를 들어 `User`라는 구조체가 있고, 그 안에 `name`이라는 String 타입의 변수가 있을 때 다음과 같이 접근할 수 있다는 뜻이다.`\User...

  • format_list_bulleted iOS/SwiftUI
  • · 2025. 4. 22.
  • textsms
[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/SwiftUI] VStack과 LazyVStack의 차이

[iOS/SwiftUI] VStack과 LazyVStack의 차이

SwiftUI에서 Stack을 사용할때 일반적인 VStack, HStack을 사용하기도 하며,Lazy라는 키워드가 붙은 LazyVStack, LazyHStack을 사용하기도 한다. 이번 글에서는 이 둘의 ScrollView 내부에서의 차이와, 메모리 관점에서의 차이에 대해 알아보도록 하겠다. ScrollView 내부에서의 차이VStack으로 다음과 같은 뷰를 구성했을때와, LazyVStack으로 구성했을 때 가장 먼저 느껴지는 차이는 "스크롤이 되는 영역"이 다르다는 것이다.struct Row: View { let id: Int var body: some View { Text("Row \(id)") } init(id: Int) { self.id..

  • format_list_bulleted iOS/SwiftUI
  • · 2025. 4. 16.
  • textsms
[iOS/Swift] 새로 등장한 접근제어자, package

[iOS/Swift] 새로 등장한 접근제어자, package

접근 제어(Access Control)는 다른 소스 파일과 모듈 등에서 코드 접근에 대해 제한하는 기능이다.접근 제어를 통해 코드의 세부 구현을 숨길수도 있으며, 어디에서까지 해당 코드에 접근할지 범위를 설정할 수 있다. 우리가 흔히 알고있는 Swift의 접근제어자는 5가지가 있다. `private` : 선언된 파일 내에서만 접근 가능`fileprivate` : 같은 파일 내 모든 스코프에서 접근 가능`internal` : 같은 모듈(타겟) 내에서만 접근 가능`public` : 다른 모듈에서도 접근 가능`open` : public과 같으면서, 서브클래싱 및 오버라이드까지 허용 그런데 Swift5.9에서 `package`라는 새로운 접근제어자가 등장했다. 이번 글에서는 이 package 접근제어자에 대해 ..

  • format_list_bulleted iOS/Swift
  • · 2025. 4. 12.
  • textsms
[iOS/Swift] 별도의 프로세스 - PHPicker를 사용할때 권한요청이 필요 없는 이유

[iOS/Swift] 별도의 프로세스 - PHPicker를 사용할때 권한요청이 필요 없는 이유

프라이버시는 애플에서 가장 강조하는 키워드 중 하나이기도 하며,사용자의 입장에서도 앱을 사용함에 있어 자신의 개인정보가 보호되길 기대할 것이다. 그래서 위치기반 서비스가 있다면 사용자에게 위치 권한을 요청해야 하며,카메라로 사진을 찍는 서비스가 있다고 하면 이때 역시 권한을 요청해야 할 것이다. 그런데, 앱을 개발하면서 의문이 든 부분이 있었다.바로 사진 첨부 기능을 추가할 때 별도의 권한 요청이 필요 없었기 때문이다. 분명 사용자는 자신의 갤러리를 열어서, 여러 사진중에 선택을 할텐데이때는 왜 갤러리 접근 권한을 요청하지 않는 것일까? 사진에 비공개 접근프라이버시와 권한 요청에 대해 잘 모를때는 사진 첨부 기능을 위해 권한 요청을 해야 한다고 생각했다.그리고 실제로 Info에서 다음과 같은 Privac..

  • format_list_bulleted iOS/Swift
  • · 2025. 4. 7.
  • 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
  • navigate_before
  • 1
  • 2
  • 3
  • 4
  • ···
  • 7
  • 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)
최근 글
인기 글
최근 댓글
태그
  • #MC2
  • #Swift
  • #UIKit
  • #ios
  • #MVVM
  • #Apple Developer Academy @ POSTECH
  • #SwiftUI
  • #MC1
  • #RxSwift
  • #애플 디벨로퍼 아카데미
전체 방문자
오늘
어제
전체
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바