api를 통해 이미지를 매번 요청하면, 이미지 개수가 많아질수록 로딩이 지연되는 현상이 발생하고 불필요한 api 비용이 증가하게 된다. 이런 문제점을 해결하기 위해 이미지 캐싱을 적용하면 한 번 불러온 이미지를 재사용하기 때문에 네트워크 트래픽을 줄이고, 지연 로딩되는 문제를 해결할 수 있다. 캐싱로직을 직접 구현할 수도 있지만 더 간단하고 안정적인 방식으로 처리해 주는 라이브러리를 사용해 이미지 캐싱 로직을 구현해 보고자 한다. 대표적인 이미지캐싱 라이브러리인 kingfisher를 활용해 이미지 캐싱을 구현해보고 실제 메모리 사용과 성능에 어떤 영향을 주는지 직접 확인해 보자. ✏️ Kingfisher웹에서 이미지를 다운로드하고 캐시 하는 순수 swift 기반 라이브러리 GitHub - onevcat..
오늘은 개발 도중 Combine을 import 할 때 오류가 떴는데 이를 해결한 과정을 포스팅해보려고 한다. 📍문제 상황 SwiftUI를 사용한 프로젝트 개발을 하던 중 아래와 같은 오류가 떴다. 이유는 observableObject 프로토콜를 사용하고 있는데 Combine 모듈을 가져오지 못해서 objectWillChange 같은 요소를 찾지 못하는 상황이다. 분명 import SwiftUI도 하고 observableObject 프로토콜도 채택하고 있는데 말이다.. 위 오류를 해결하는 방법은 fix 누르면 자동으로 코드에 internal import Combine 가 추가되면서 오류가 해결된다. 여기서 생기는 의문점들. . Combine을 호출하지 않아도 SwiftUI가 Combine을 호출하..
이때까지 Alamofire만 써봤었는데 Moya라는 네트워킹 오픈 소스 라이브러리에 대한 궁금증이 생겼고, 마침 진행하고 있는 프로젝트에서 네트워킹을 해야 했기에 이번에 Moya를 프로젝트에 적용해 보고자 포스팅을 하게 되었다. 따라서 오늘은 네트워킹에 필요한 오픈소스 라이브러리인 Moya에 대해서 살펴보고 API를 활용해 직접 통신해 보는 것까지 해보려고 한다. ✏️ Moya란?Alamofire를 기반으로 한 네트워킹 추상화 계층을 만드는 오픈 소스 라이브러리 GitHub - Moya/Moya: Network abstraction layer written in Swift.Network abstraction layer written in Swift. Contribute to Moya/Moya deve..
앱이 잠깐이라도 멈추면 사용자는 큰 불편함을 느끼고, 심한 경우에는 앱을 삭제하게 될 수도 있다. 따라서 좋은 사용자 경험을 제공하려면 성능 문제를 정확히 파악하고 개선할 수 있어야 한다.이런 순간에 instruments는 지연, 병목 현상을 찾아낼 수 있는 도구이다. 따라서 오늘은 instruments를 활용해서 실제 내 프로젝트에 어떤 부분이 hang이 발생하는지 파악하고, 최적화 작업을 해보자! ✏️ 들어가기 전hang이 어떤 것인지, instruments로 Hang을 어떻게 분석할 수 있는지 이해하고 넘어가자! 💡 Hang이란? : 응답이 없는 순간을 hang이라고 부른다. 위사진을 통해서 살펴보자. 탭을 하고 뷰에 나타나기까지 250ms이상이 걸리면 행이 감지된다.이 경우 주로 메인스레..
[iOS] UITest - XCUITest이번 포스팅에서는 UITest에 대해서 다뤄볼 예정이다!사용자 인터렉션을 테스트하여 UI플로우를 검증하는 XCUITest와,실제 픽셀 단위로 UI를 제대로 구성했는지 확인해 볼 수 있는 Snapshot Test에 대해yanni13.tistory.com 바로 전 포스팅에서 UITest에 대해서 알아봤었다.이번 블로그에서는 또 다른 UITest인 Snapshot 테스트에 대해서 공부해 보자! ✏️ Snapshot test란?특정 뷰를 기준으로 스냅샷을 저장하고 이후 실행 시 새로 생성하는 테스트 기법 snapshot 테스트의 가장 큰 장점은 의도치 않은 UI 변경을 빠르게 감지할 수 있다는 점이다. 코드 수정이 실제 화면에 영향을 주었는지 자동으로 확인할 수 있고..
이번 포스팅에서는 UITest에 대해서 다뤄볼 예정이다!사용자 인터렉션을 테스트하여 UI플로우를 검증하는 XCUITest와,실제 픽셀 단위로 UI를 제대로 구성했는지 확인해 볼 수 있는 Snapshot Test에 대해서 공부해 보자. 🧐 테스트 코드의 필요성왜 Test-code를 사용해야 할까? 주변에서 테스트 코드를 프로젝트에 도입한다고 하면 개발하기도 바쁜데 테스트 코드까지 짜면 시간낭비 아니냐, 비효율적인 거 같다는 말을 많이 들었다. 나 또한 그렇게 생각했었고 여전히 프로젝트 규모가 작거나, 단기성 프로젝트일수록 테스트 코드를 도입하는 것이 비효율적이라고 생각한다.하지만 장기전으로 봤을 때 테스트 코드가 동작하는 기능은 테스트가 동작하지 않는 기능보다 나중에 리펙토링에서 훨씬 부담을 덜 느끼게..
✏️ Swiftgen이란? SwiftGen이란 Resources 폴더 안에 들어가는 폰트, assets, color들을 문자열이나 코드로 다룰 때 오타나 잘못된 키의 사용을 방지하여 안전하게 코드로 관리할 수 있도록 하는 자동화 도구이다. 보통은 UIImage(named: "logo_main")이라고 작성했다면 SwiftGen을 실행했을 땐 자동으로 Asset.logoMain.image 와 같은 enum 타입의 코드가 자동 생성되어서 실제 코드에서 문자열을 최소화하여 사용할 수 있도록 한다. 팀프로젝트를 하다보면 팀원이 넣은 Assets에서 이름이 변경되거나, 문자열로 Image를 호출하는 일이 많아져서 프로젝트 규모가 커질 경우 문자열 때문에 컴파일 에러가 났던 경험이 있을 것이다. (휴면에러..)따..
오늘은 푸시알람을 보내는 Push notifications에 대해서 공부해보자! 공부용 블로그이므로 정확하지 않을 수 있습니다. 틀린 내용이 있다면 댓글 부탁드립니다!! 😀 ✏️ Push Notifications 앱에 알람이 오게 하는 방법은 Local notification, Remote notification 두가지가 있다. Local notification기기 내부에서 발송하는 알림 UserNotifications을 사용해서 앱이 특정 시간이나 조건에 맞춰 알림을 보내도록 코드를 작성하면 시스템 자체에서 해당 조건과 시간에 맞는 알람을 트리거 하여 사용자에게 푸시 알람이 가게 되는 방식이다. 별도의 서버가 필요하지 않아 간단한 알람을 트리거해야 할 때 사용할 수 있다.앱 자체에서 미리 이 시간이..
- Total
- Today
- Yesterday
- SnapshotTest
- detached task
- hangs
- foundation models
- 스위프트
- 코딩테스트
- 프로그래머스
- Fastlane
- UIKit
- wwdc25
- XCTest
- ObservableObject
- rxswift
- mlmodel
- xcuitest
- Task
- Xcode
- 백준
- combine
- SWIFT
- group tasks
- internal Combine
- unstructed task
- 클로저
- closure
- asyne-let
- CoreData
- swiftUI
- UITest
- ios
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |