전체 글 21

WWDC24 - Meet Swift Testing

https://developer.apple.com/videos/play/wwdc2024/10179/ Meet Swift Testing - WWDC24 - Videos - Apple DeveloperIntroducing Swift Testing: a new package for testing your code using Swift. Explore the building blocks of its powerful new API, discover...developer.apple.com * XCode16 부터 지원되는 기능입니다.  Building blocks 파일을 추가할 때 새로 생긴 템플릿이 생긴걸 볼 수 있습니다.  @Test attribute함수가 테스트라는 것을 나타냅니다. 이걸 붙이면 XCode가 테..

iOS/WWDC 2024.08.03

[UIKit/Refactoring] 홈 화면 UX 개선하기 (리사이징, 메모리 캐싱)

- 문제 상황홈 화면에서 스크롤 시, 앱이 버벅인다는(렉이 걸린다는) 이슈를 제보받았습니다.실제로 구동을 해보니, 앱이 버벅이고 있었고 메모리 사용량도 심상치 않았습니다.이 문제는 저도 알고 있는 문제였습니다. 하지만, 매번 시뮬에서 테스트하다보니 "시뮬이라서" 렉이 걸리는구나라고 생각하고 있었습니다.  앱의 홈 화면은 이렇게 생겼습니다. - 메모리 디버그순환참조로 인한 메모리 누수 등 메모리로 인한 문제가 아닐까 생각해 메모리 디버그를 확인했습니다. * 아래 문제 상황 설명은 iPhoneXS 디바이스 기준입니다. 앱을 처음 진입한 이후의 메모리 사용입니다.   스크롤을 딱 한번 했을 때의 메모리 사용입니다.이미지 하나의 크기가 5~10MB인걸 감안했을 때, 뭔가.. 뭔가 비정상적이라고 느꼈습니다.  위..

iOS/Refactoring 2024.07.27

[UIKit/Refactoring] MyPageProfileEditViewModel 코드 개선하기 (2)

이전글 : https://ios-dev-su.tistory.com/13 MyPageProfileEditViewModel 코드 개선하기 (1)기존 코드 수정 전의 기존 코드는 다음과 같습니다.더보기 import UIKitimport Combineimport Alamofireimport Kingfisherfinal class MyPageProfileEditViewModel { // MARK: - Properties private let coordinator: MyPageCoordinator private varios-dev-su.tistory.com 이번 포스팅에서는 코드와 구조도 개선하도록 하겠습니다. - tagFieldChangedFromUser() 함수 개선// 유저의 텍스트필드 입력에 따른 뷰모델 및..

iOS/Refactoring 2024.07.17

[UIKit/Refactoring] MyPageProfileEditViewModel 코드 개선하기 (1)

기존 코드 수정 전의 기존 코드는 다음과 같습니다.더보기 import UIKitimport Combineimport Alamofireimport Kingfisherfinal class MyPageProfileEditViewModel { // MARK: - Properties private let coordinator: MyPageCoordinator private var interactor = MyPageDownloadInteractor() @Published var categoryTagItemSelectCount: Int = 0 var categoryTagItems = [TagItem(tag: "제품 디자이너", isSelected: false), TagItem..

iOS/Refactoring 2024.07.13

[UIKit/Refactoring] MyPageNotificationViewModel 코드 개선하기

1 저는 이런식으로 주석을 달아서, 어느 파트가 눈에 쉽게 보이는지를 구성해왔습니다.근데, 주석은.. 기껏해야 주절주절이기 때문에, 삭제하기로 했습니다.또한, extension으로 구분하는 것도 없앴습니다. 2func readNotification(index: Int) { if notifications[index].status == .UnRead { notifications[index].status = .Read putNotificationReadStatus(notificationId: notifications[index].id) }} 알림을 읽지 않은 상태라면 읽음 처리를 하는 함수입니다.들여쓰기를 없앨 수 있어서 없앴습니다.func readNotification(i..

iOS/Refactoring 2024.07.09

클린 아키텍처 - 다형성

(책에 대한 내용을 요약한 것이 아닌, 책을 읽으며 생각을 정리하는 포스팅) 다형성이란? 다형성은 OOP(객체 지향 프로그래밍)의 핵심 개념 중 하나로, 같은 인터페이스나 상위 클래스를 통해 다양한 데이터 타입을 처리할 수 있게 하는 기능이다.다형성은 한 가지 타입이 다양한 동작을 수행할 수 있는 능력이다. 예시 class Game { func play() { print("무슨 게임인지 모르겠지만 일단 시작하겠습니다.") }}class LOL: Game { override func play() { super.play() print("LOL 시작") }}class MapleStory: Game { override func play() { ..

Book/IT 2024.07.05