- TCA(2)-Store, ViewStore& Binding2료일이전의 글에서 Store는 런타임동안 Reducer의 인스턴스를 관리하는 참조타입의 객체라고 하였다. 결국 상태, 액션에 대한 반응까지 모두 포함한 역할을 한다. 그렇다면 이 Store를 뷰에서는 어떻게 사용해야할까?Storelet store: StoreOfScope : 하위 State 및 Action을 다루는 스토어로 변환 ㄱㄴ. 2가지 인자를 받는다. 1. State: 상태 추출할 keypath 2. Action: 액션 추출할 Keypath. -> 즉 전체의 상태에서 너 필요한거만 Store로 줄께. => View는 필요한 상태와 액션만 접근할 수 있게된다. 모듈화, 유연성 굿(자연스럽게 유닛테스트도)ViewStoreView에 필요한 상태만 구독하고 업데이트하는 역할. 하나의 스토어에서 또 많은 작업..
- 2024-07-16 15:41:27
- TCA(1)- (mvvm...-> NEXT?)2료일처음에 UIkit을 했을때는 MVC 패턴이였다. 하지만 점점 ViewController가 하는게 많아지고 양방향이기에 유지보수도 힘들어지고 테스트도 어려웠다. 그래서 점차 MVVM 패턴으로 바뀌고 실제로 나의 사이드 거닐다 프로젝트에서는 MVVM + Combine으로 프로젝트를 하였다. ViewModel에서 input과 ouput을 View와 binding하여 뷰를 업데이트하기에 코드의 양도 줄일 수 있고, 뷰모델이 뷰와 독립적인 코드의 구조로(뷰모델이 뷰에 대한 의존성이 없다), 자체 테스트도 용이해진다. 하지만 SwiftUI를 MVVM으로 했을때는 항상 팀원하고 이야기하던게 있었다. 우리가 하는 것이 진짜 MVVM이 맞는가..?ViewModel은 State-binding을 통해 관리를 해주었지만 sw..
- 2024-07-04 16:23:15
- Swift Performance-wwdc242료일https://www.youtube.com/watch?v=nb3bRQa0iGQ&t=3s 1. 여기서 말하는 성능이란?: 애플리케이션이 얼마나 빠르고 효율적으로 동작하는지를 나타내는 척도. - 지연: 작업이 시작되고 완료될때 까지 걸리는 시간.- 에너지 소모: 앱이 베터리 얼마나 사용하는지- 메모리 사용: 앱이 얼마나 많은 메모를 점유하고 어떻게 관리하는지. 2. 낮은 수준의 성능을 볼 때 고려해야할 원칙들 bottom-up으로 생각을 해보자- 최적화되지 않은 함수 호출들: 4가지의 cost가 있다고 한다. 이 중 3가지는 우리가 하는것. 1. 먼저 호출에 의한 인수를 설정(arguments)가장 낮은 수준인 1번은 우리가 함수를 호출할때 인수를 넣어야한다. 하지만 최신 프로세서에선 레지스터를 활용해 ..
- 2024-06-17 17:17:32
- 힙메모리 분석 - WWDC242료일이 글은 https://www.youtube.com/watch?v=X_JYRz-Hd0o유튜브의 wwdc24영상을 다 챙겨보면서 이건 정리할 필요가 잇따고 생각을 하여 정리를하고 있슴다.앱이 시작하면 가상메모리의 빈 주소 공간을 얻는다. -> 앱이 시작 되면 시스템이 Main Executable, 연결된 라이브러리들을 로드하고 디스크의 읽기전용 리소스 영역에 매핑한다. -> 앱이 실행되면 각 스레드의 로컬 및 임시 변수저장에 대한 스택영역도 사용이 가능해진다. 동적 메모리는 힙이라는 공간에 저장된다.힙힙은 하나의 메모리블록이 아니라 multiple 가상 메모리 영역으로 구성된다. 각 영역들은 개별 할당으로 구분된다. 내부적으로 16KB메모리 페이지로 구성되어있다. 총 3가지 상태가 있는데, 아직 기록되..
- 2024-06-15 14:15:29
- Coordinator Pattern - UIKit2료일SwiftUI가 너무 재밌어 매일 swiftui로 개발을 하고 싶었다.... 하지만 4학년인 현재 취업을 해야한다는 압박감에 uikit로 다시 회귀하여 개발을 시작하고 있다....우선 Uikit에서 뷰전환에는 viewcontroller를 Present해주는 방법과 UINavigationController를 이용한 화면 이동 두가지방법이 잇다. 근데 이렇게 해주면 각 뷰에서 다른 뷰로 이동할때마다 뷰를 생성하고 뷰모델을 주입해주어야 하기에 추적하기에 굉장히 힘들다. 이전에 SwiftUI에서 navigationStack에서 Path관리를 통해 navigationDestination을 이용하여 뷰와 뷰모델을 생성해주고 관리를 해주는 작업을 진행하였다. NavigationStack은 navigationView에..
- 2024-05-14 12:52:18
- CoreLocation과 Battery의 관계2료일바로 직전의 글에서 CoreLocation을 이용해 위치를 가져오는 기능을 구현하였다.... 근데...핸드폰이 뜨겁다.. 나라도 이 앱안쓸듯?그래서 어떻게 하면 효율적으로 사용할수 있을지 체크하며 개선하는 작업이 필요하다.애플에서는 background location을 측정할수 있는 3가지 방법이 존재한다고 한다. 1. Xcode Gauges를 이용하면 xcode내에서 CPU, Network, 위치 사용량 등 시스템 사용량에 대한 정보를 제공한다. 또한 시간대로 위치사용이 앱에 미치는 영향을 보여준다. 그래서 내가 궁금했던 corelocationManager를 어떻게 관리해야 enegery를 가장 아끼고 우리가 원하는대로 사용할 수 있을지 지금부터 체크해보겠습니다.배터리? distanceFilter..
- 2024-04-21 21:48:14
- CoreLocation & MapKit2료일: 애플의 여러디바이스들을 통해 위치정보를 활용할수 있는 FrameworkWi-fi, GPS, Bluetooth, 자기장 센서, 기압계, 셀룰러를 이용하여 위치데이터를 수집한다.우리는 CLLocationManager class를 통해 많은 데이터를 가져올수 있다표준적이고 중요한 위치 업데이트표준 위치? 주기적으로 유저의 위치를 업데이트 하여 GPS기반 데이터 활용. 정확도 조절이 가능하고 이동경로나 위치의 정확한 정보를 필요할때 사용하면 된다. → 더 많은 에너지 소모중요 위치? 사용자의 위치가 크게 바뀔때만 업데이트한다. 정확도가 떨어지지만 에너지는 절약startMonitoringSignificantLocationChanges() 500m이상 이동할때만 이벤트를 처리해줄수 있다. 물론 백그라운드에서 이..
- 2024-04-19 20:08:26
- Uniform type Identifiers2료일파일 형식은 어떻게 식별될까? UTI의 원리와 중요성ex) iPAD로 셀카를 찍고 그사진을 맥북으로 전송하면 파일이 전달된다. 그리고 해당 파일을 클릭해서 열면 프리뷰에서 사진이 열린다. 어떻게 내 맥은 이미지임을 알고 처리했을까? 먼저, 컴퓨터에서 파일이란 바이트의 연속적인 시퀀스이다. 뭐 파일의 유형을 다 읽어서 할수 있지만 너무 비효율적이다. 그래서 더 효율적인 방법을 사용한다. 컴퓨터 운영체제는 파일의 유형을 알아내기 위해 주로 파일 경로의 확장자를 사용한다.맥에서는 안보이지만 .jpeg가 숨어있는 것.웹 환경에서는 파일 경로 확장자만으로 파일을 식별하지 않고 MIME(Multipurpose internet Mail Extension)로 표준화된 방식을 사용한다.이미지: image/jpeg, im..
- 2024-04-18 20:21:17
- Coremotion2편- 걷기데이터 & HealthKit2료일아주아주아주 예전에 작년에!! Coremotion 프레임워크 관련해서 글을 썼었다. 핸드폰 기울기에 따라 공이 움직여 스프라잇킷과 함께 이용하는 거여서 x,y,z, 가속도.. 중력..등등 다양하게 적어놨었다.오늘은 어쩌다보니 새로운 기획하고 개발하는 앱에는 실시간 걸음수 측정이 필요한데 이를 Healthkit에서는 처리가 어려워서 Coremotion이 적당하여 걸음에 관련된 정리들을 해보려 합니다!!우선 제가 개발하려는 앱의 목표!- 유저들의 실시간 걸음에 관한 정보를 얻고 이를 활용해 피드백을 해줍니다.(보폭, 보행속도)등을 미션을 통해 세팅해놓고 달성을 하여 나이드신분들이 더 좋은 걷기 운동을 할수 있게하자!음...HealthKit이라는 아주 좋은 애플의 건강정보가 있잖아.....그럼 이거써야해?He..
- 2024-04-17 12:48:07
- Vapor - middleware2료일클라이언트(즉 아이폰)에서 서버로 요청을 보낸다. 근데 그 서버에 닿기 직전에 이 벽(미들웨어)를 거쳐서 지나간다. ex) Authentication 미들웨어는 유저가 어? 너 회원이야? 아니야? 판단을 할수 있음!! code로 보자 routes파일에다가 app.middleware.use(LogMiddleware())이거만 해주면 어떠한 우리가 요청을보내든 Log middleware가 찍히는것을 볼 수 있다. 주의행할것은 next.respond(to: request)를 해주지 않는다면 절대 우리가 가려던 곳에 reach할수 없어용 이제 아까 예시를 들었던 유효한 토큰이 있을때만 서버를 통신하도록 하는 코드를 작성해보자!! struct AuthenticationMiddleware: AsyncMiddlewa..
- 2024-03-21 00:05:49
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)