일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- convert base64
- ViewBuilder
- ios
- swift #swift keychain #keychain 사용법
- UIViewControllerTransitioningDelegate
- SwiftUI
- development language
- pod install
- Side Menu
- GeometryReader
- oberve url
- UIPresentationController
- scrolling tab
- 기존 앱
- Tuist
- transformation.map
- base64 변환
- 상단 탭바
- url 추적
- url 관찰
- DevelopmentRegion
- detect url
- Swift Package Manager
- 개발자 면접
- 스크롤 탭
- Android
- DataBinding
- notifychanged
- swift
- List
- Today
- Total
목록분류 전체보기 (170)
버그 잡이
개발자 인증서 (development provisioning) iOS 개발자로 회사에 처음 들어갔을때 가장 처음으로 하는 것이 Xcode를 받고 인증서를 셋팅하는 것입니다.저는 매번 이 과정이 헷갈리더라구요. 그래서 그 방법을 정리해봅니다.방법에 대해서 알기 전에 인증서 개념에 대해서 간단하게 정리하고 넘어가겠습니다. 인증서 관련 개념 정리 서명이란?개발, 배포를 해도 되는 사람인지 확인‘너는 애플로부터 인증을 받은 사람인가?’Automatically manage signingAutomatically Signing 하면 기본적으로 development, distribution 인증서 모두 만들어줌자동으로 해주기 때문에 크게 신경쓰지 않아도 서명과 인증이 됨Certificate애플에서 인증한 개발자가 되..
문제의 발단오늘 하루 동안 다시 보지 않기를 위해서현재 시간에 1일을 더한 날짜를 저장하고그 시간을 현재 시간과 비교하는 로직을 구현해야 했는데요.관련해서 print문을 찍어보니 Date()가 9시간 전의 시간으로 출력되는 것을 확인했습니다. // 현재 시간 (한국 시간 7월 28일 15시)let currentDate = Date()print("\(currentDate)") // 2024-07-28 06:04:34 +0000 왜 그럴까요? 원인은 TimeZone 때문입니다.Date()는 기본적으로 UTC 기준으로 생성됩니다.UTC는 한국 시간 보다 9시간 전의 시간입니다. 사실 UTC 기준으로 Date를 저장하고 UTC 기준으로 Date를 비교하면 문제 없습니다.24시간 기준으로 한다면 말이죠.둘 ..
지난번 포스팅: https://jinsangjin.tistory.com/186 Swift Pakcage Manager로 프로젝트 기능 모듈화 하기왜 SPM으로 모듈화를 하는가?- 모듈화를 해보고 싶었습니다.- Tuist를 활용해서 하는 방법도 있었지만 Tuist까지 같이 도입하기에는 시간이 부족했고- Tuist를 도입하기 전에 SPM으로 간단하게(?) 레거jinsangjin.tistory.com 지난번 포스팅에서 Swift Package Manager로 기능을 모듈화 하고 데모 앱까지 만드는 방법을 알아봤습니다.오늘은 모듈화 과정에서 삽질했던 부분을 모아서 적어보겠습니다. 모듈을 어떻게 import 할것인가?모듈들은 프로젝트 루트 -> Modules 폴더 안에 위치했습니다.처음에는 모듈을 project..
왜 SPM으로 모듈화를 하는가?- 모듈화를 해보고 싶었습니다.- Tuist를 활용해서 하는 방법도 있었지만 Tuist까지 같이 도입하기에는 시간이 부족했고- Tuist를 도입하기 전에 SPM으로 간단하게(?) 레거시 프로젝트에서 모듈화가 가능할지 테스트 해보고 싶었습니다.- 그리고 SPM으로도 충분하지 않을까? 라는 생각도 있었습니다. 이번 목표- Invest라는 새로운 feature를 Package로 분리하고 Demo Project까지 만드는 것 Invest 패키지 추가1. 프로젝트 생성 후 프로젝트 루트 경로에 Modules 라는 폴더를 추가합니다. 2. Modules 폴더 안에 Invest 패키지를 추가합니다. - Library를 선택해주고- 생성시 경로를 Modules 폴더 안으로 설정 후 cre..
SwiftUI는 선언형 프레임워크로서, 상태 관리를 효율적으로 할 수 있도록 다양한 도구를 제공합니다.그 중에서도 ObservableObject와 StateObject는 데이터 모델 관리에 중요한 역할을 합니다.이번 글에서는 ObservableObject와 StateObject의 정의와 사용법, 두 객체의 공통점과 차이점, 그리고 언제 어떻게 사용해야 할지에 대해 알아보겠습니다. ObservableObject란?ObservableObject는 SwiftUI에서 데이터의 변화를 감지하고, 뷰에 이를 반영할 수 있도록 도와주는 프로토콜입니다. 주로 뷰 모델(ViewModel)로 사용되어 데이터의 변경을 뷰에 전달합니다. 주요 특징:클래스 기반 객체에서 사용됩니다.@Published 어노테이션을 사용하여 프로..
AnyView란 무엇인가? SwiftUI에서 개발하다 보면 함수에서 서로 다른 타입의 뷰를 리턴해야 하는 경우가 생깁니다.이러한 상황에서 사용할 수 있는 것이 바로 'AnyView'입니다. 즉, 모든 종류의 뷰를 래핑할 수 있는 타입으로, 다양한 타입의 뷰를 하나의 타입으로 취급할 수 있게 해줍니다. 또한, 'AnyView'는 파라미터로 전달할 때도 유용하게 사용할 수 있습니다.함수에 여러 종류의 뷰를 파라미터로 전달해야 할 때, 다양한 타입의 뷰를 하나의 파라미터 타입으로 처리할 수 있게 해줍니다. struct CustomViewContainer: View { let content: AnyView var body: some View { VStack { Text..
SwiftUI를 쓰다보면 기존 AutoLayout 보다 성능이 떨어짐을 느낄 수 있습니다.실제로 AutoLayout보다 메모리를 평균 20% 정도 더 차지하고(물론 어떤 뷰를 그리느냐에 따라 달라지겠지만)이에 따라 성능상으로도 다소 떨어진다는 연구 결과도 있습니다.이해 없이 SwiftUI를 쓰면 성능상 저하를 가져올 수 있기 때문에 SwiftUI는 어떤 식으로 비교 연산을 하고 어떻게 최적화 할 수 있을지 알아봅시다. https://medium.com/@vladislavshkodich/mastering-swiftui-are-you-really-as-good-as-you-think-40a4953f7e88위 글(Mastering SwiftUI: Are you really as good as you think..
Keychain이란? Keychain은 iOS에서 제공하는 보안 저장소로, 사용자의 민감한 정보를 암호화하여 안전하게 저장할 수 있게 해줍니다. 이는 UserDefault나 파일 시스템 저장과 같은 다른 저장 방식보다 안전한 옵션을 제공합니다. Keychain Item keychain item 단위로 write / read / delete / update 합니다. keychain item는 attribute를 통해서 key-value 값 뿐만 아니라 부가적인 데이터 저장 및 추가 옵션 설정이 가능합니다. SecItemAdd(), SecItemDelete() 와 같은 함수을 통해서 keychain item을 저장할 수 있습니다. (뒤에 나오는 코드를 보시면 보다 이해가 쉬울겁니다.) Attributes k..