- 이미지 최적화 적용하기2료일흠..아직 많이 모를것이다. 세상에 나온 내 앱 볼레또를 그래서 한번더 홍보하고 들어갈게요 한번씩 아니 두번,세번 써줘요https://apps.apple.com/kr/app/볼레또/id6737753864 볼레또1. 티켓으로 꾸미는 특별한 여행 기록 - 일반적인 일기 형식이 아닌, 티켓을 형상화한 독특한 기록 방식을 제공합니다. 티켓에는 출발지, 도착지, 여행 일정, 동행자 등의 정보가 담기며, 사용apps.apple.com요렇게 친구들과 함께 하나의 티켓에서 나만의 프레임으로 네컷사진을 올리고 스티커와 말풍선으로 귀엽게 꾸미는 앱이다. 그러기에 사진이 굉장히 많다... 현재의 앱을 사용하면서 메모리를 체크하면주식그래프같다이전에 나는 이미지가 렌더링되는 과정에서 CPU의 사용량과 메모리를 줄일 수 있는..
- 2025-03-06 23:19:18(36일 전)
- Preview는 어떻게 그림을 그리는 걸까? is that hotreload?2료일이전에 플러터로 개발했을때 플러터에는 Hot reload라는 아주 핫하고 편리한 기능이 있었습니다. 이는 코드를 변경을 하면 즉시 실시간으로 UI를 업데이트해서 뷰짤때 너무나 효율이 올라간 느낌.. 이 기능이 가능한 이유는 Dart언어와 그 실행환경때문입니다ㅣ.Flutter Hot reload프로세스1. 변경감지: 개발자가 Dart 소스 코드를 수정하고 저장하면, Flutter의 IDE가 이를 감지한다.2. 코드전달: 수정된 코드가 Dart VM에 전달된다. Flutter는 앱을 실행 중인 가상머신과 연결되어 있어, 이 변경사항을 실시간으로 보낼 수 있ㄷ.3. 클래스업데이트: DartVM은 변경된 소스 기반으로 앱의 클래스를 업뎃한다.4. 위젯 재빌드: 필요한 최소한의 위젯만 다시 빌드한다. 그리고..
- 2025-03-01 20:02:26(41일 전)
- ScrollView 꾸미기? Deep Dive2료일https://www.youtube.com/watch?v=alhFwkbsxrs역시나 모든 영상의 출처는 WWDC영상 찾아보다가 와 이쁘다 하면서 들어가게 되었다. 먼저 scrollTargetBehavior은 iOS17이상부터 가능하다.!!! 주의해야할듯. 사용하고 싶어도 못쓸수가 있어요~ @available(iOS 17.0, macOS 14.0, tvOS 17.0, watchOS 10.0, *) nonisolated public func scrollTargetBehavior(_ behavior: some ScrollTargetBehavior) -> some View흠 까보니까 안에 ScrollTargetBehavior라는 놈을 받네. 그런데 요놈은 프로토콜이다. public protocol S..
- 2025-02-22 13:23:16(48일 전)
- MemoryLeak을 찾아보자(강한참조순환인가?) - 실전편22료일나의 앱 볼레또는 여행 날짜가 되면 CLMointior인스턴스에 해당하는 지역의 위도 경도를 넣어 모너터링을 키고 유저가 해당 지역에 가면 푸쉬 알람을 보내주는 기능이 핵심이다. 이전에는 모니터링 이외의 메모리 릭을 살펴봤는데 이번에는 모니터링에서 발생하는 Memory Leak을 살펴볼 예정이다.저번에 했던 Memory debugger Graph를 다시 열어보자. 막 거미줄마냥 엮여있다.총 16개로 저번에 1개 고치는데에도 하루종일 사용했는데 이번엔 얼마나 걸릴지 막막하다. 나의 과거를 욕해야지..일단 이번에는 Command Line Tool사용하여 더 살펴보려 한다. 메모리 그래프 디버거 킨 상태에서 File > Export Memory Graph를 선택하여 스냅샷을 파일로 저장하고 해당하는 것을vm..
- 2025-01-16 23:17:18(85일 전)
- Memory Leak을 찾아보자 실전편(1)2료일이전글에서 weak var을 설명하며 지연된 할당해제에 관해 글을 썼다. 이번엔 실제 내 프로젝트를 보며 어디서 메모리 릭이 발생하는지 찾아보자.가장 먼저 edit Scheme에서 Malloc Scribble과 Malloc Stack Logging을 켜주었다.Malloc Scribble(메모리 오버라이드 감지)Malloc Scribble은 동적 메모리 할당 시 메모리를 더미값으로 초기화하고, 해제 전까지 해당 메모리 공간에 예상치 못한 쓰기 작업이 발생하는지 감지하는 디버깅 기능. 이를 통해 초기화되지 않은 메모리에 접근하거나, 이미 해제된 메모리를 사용하는 문제를 파악할 수 있다.동작 원리• 동적 메모리 할당 시, 메모리를 특정 패턴 값으로 채운다 • 일반적으로 0xAA로 초기화.• 메모리를 ..
- 2025-01-14 02:32:19(88일 전)
- Alamofire error code handling2료일현재 내가 개발중인 앱 볼레또에서는 에러코드핸들링을 오로지 401 즉 토큰 만료될때에만 final class RequestTokenInterceptor: RequestInterceptor { func adapt(_ urlRequest: URLRequest, for session: Session, completion: @escaping (Result) -> Void) { guard let accessToken = KeyChainManager.shared.read(key: .accessToken) else { return } var urlRequest = urlRequest urlRequest.setValue("Bearer " + a..
- 2024-12-17 07:44:55(116일 전)
- Preference Key2료일PreferenceKey는 하위 뷰에서 상위 뷰로 데이터를 전달하기 위한 메커니즘입니다. 일반적으로 SwiftUI는 데이터가 상위 뷰에서 하위 뷰로 전달되는 구조를 따르지만, PreferenceKey는 그 반대 흐름을 가능하게 해줍니다.PreferenceKey의 주요 구성 요소PreferenceKey는 다음과 같이 세 가지 주요 요소로 이루어집니다:키 등록: PreferenceKey 프로토콜 준수 및 타입 정의값 송신: 하위 뷰에서 preference 메소드를 통해 값 전달값 수신: 상위 뷰에서 onPreferenceChange 메소드를 통해 값 수신PreferenceKey 프로토콜 구조SwiftUI에서 PreferenceKey는 아래와 같은 프로토콜로 정의됩니다.public protocol Prefer..
- 2024-11-25 18:23:54(137일 전)
- ShareLink - 개발일기2료일앱 내에서 새로운 친구를 맺을 때, 링크를 통해 친구를 맺고, 만약 다운받지않은 유저라면 앱스토어로 이동하도록 구현을 해야했다. 그러면 어떻게 공유할 수 있을까? 카카오 API의 방법도 있지만 애플로그인으로 하는 경우에는 사용하지 못한다. 그래서 우리는 iOS16이전까지는 위의 기능을 UIKit을 이용해야 했지만 이후에서는 ShareLink를 통해 자체적으로 SwiftUI에서 사용할수 있기에 위의 기능을 사용하기로 했다.아주 쉽다. 그 전에 ShareLink를 통해 데이터를 내보낼 수 있는데 해당 데이터(Item) Transferable 프로토콜을 준수해야한다.ShareLink(item: subject: message:): subject는 제목으로 공유대상이 이메일, 메시지 앱 등일때 필드들이 미리 채워..
- 2024-11-09 19:40:09(153일 전)
- TCA- TestingCode2료일이전까지는 테스트코드나 프리뷰 코드 없이 오직 Dependency의 라이브밸류를 통해서만 개발을 테스트하고 진행했다. 하지만 이렇게 하다보니 계속 빌드를 해야한다는 단점이 있었고 원하는 플로우를 보기위해 과정이 커질수록 시간이 오래걸리고 임의의 값을 넣어 테스트하기도 힘들었다. 그래서 드디어 테스트 코드와 프리뷰코드를 공부해보려 한다. ㅠㅠㅠ 늦었따!https://axiomatic-fuschia-666.notion.site/Chapter-9-TCA-Testable-Code-ad3924113fbb4f89a06f30ddb8e884f7 Chapter 9. TCA와 Testable Code | Notion9.1 유닛 테스트axiomatic-fuschia-666.notion.site역시나 노션문서를 통해 참고하여..
- 2024-10-26 01:42:43(168일 전)
- CLMonitor2료일WWDC23에서 새로 나온 API로 사용자의 위치나 비컨을 모니터링하는 새로운 방식이다. 이 글에서는 실제 내가 볼레또 프로젝트에 어떻게 적용했는지를 자연스럽게 작성할 예정입니다.사실상 너무 간단하다. 1. 원하는 이름으로 CLMonitor 인스턴스를 생성하고2. 모니터링할 조건(지리적위치, 비컨)을 정의하고3. 이벤트대기: 조건이 충족되면 이벤트를 비동기적으로 수신하고4. 동작 수행: 이벤트가 발생하면 원하는 로직을 실행한다.즉 조건에 의해 조건이 충족될때 이벤트를 비동기적으로 처리할 수 잇게 해준다.하지만 어떻게 구현되어있는지를 살펴보자 CLMonitor 인스턴스는 각각 하나의 모니터링 작업에 대한 "게이트웨이" 역할을 한다. CLMonitor는 액터로서 설계되었기 때문에, 여러 스레드가 동시에 ..
- 2024-10-22 10:05:03(172일 전)
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)