개발/iOS 3

[SwiftUI] ViewModifier를 이용한 Custom Modifier 활용

SwiftUI로 앱을 작성하다 보면, View에 대한 ViewModifier를 수족처럼 사용하게 된다. 이를테면 가장 많이 사용하는 .padding()부터, .foregroundStyle(), .background() 등 View에 사용할 수 있는 많은 Modifier가 존재한다. 이에 더해 Button, NavigationLink 등 Label 아규먼트에 View 객체를 전달하여 사용하는 경우 비슷한 패턴의 코드가 반복될 수 있다. 가령 기계적으로 다음과 같은 뷰를 작성하다 보면, 문득 이런 생각이 들 수 있다. var coinList: some View { LazyVStack { ForEach(filteredList, id: \.id) { item in ..

개발/iOS 2025.04.17

[RxSwift] .observe(on:) vs .subscribe(on:)

RxSwift를 사용하다 보면 Thread를 변경해 가며 작업을 해야 할 때가 있다. 특히 데이터를 가공한 후 이를 뷰에 반영할 때는 특히나 신경을 써줘야한다. (그렇지만 Drive를 쓴다면?) 오늘은 RxSwift에서 Thread를 변경하는 두가지 방법에 대해 정리해보려고 한다.  잠깐, 그 전에이 녀석을 Operator라고 해야 할까 Method라고 해야 할까? ReactiveX 공식 문서에서는 ObserveOn과 SubscriveOn을 Operator로 명시하고 있다. 간단하게 '데이터 스트림'에 영향을 준다면 Operator라고 구분하면 될 것 같다. 그럼 우선 ObserveOn부터 살펴보도록 하자.  .observe(on:)Wraps the source sequence in order to ru..

개발/iOS 2025.02.19

[UIButton] .addTarget VS .addAction

우리는 UIKit 프레임워크에서 버튼을 구현할 때 일반적으로 UIButton을 사용한다. 물론 디자인이나 의도하는 사용자 경험에 따라 뷰에 탭 제스처를 붙이기도 하고, 다양한 방법으로 구현하는 경우도 있다. 오늘은 버튼의 스타일이나 디자인보다는 동작에 대해 정리를 해보려고 한다. UIButton의 동작을 정의하는 두 가지 방법 addTarget 메서드와 addAction 메서드를 비교해 보자.  AddTarget우선 한 가지 짚고 넘어갈 사실은, 두 메서드 모두 UIButton이 아닌 UIControl(* UIButton은 UIControl을 상속한다.)의 메서드이다. 우리에게 익숙한 addTarget 메서드의 정의를 보면, target과 Selector, controlEvents를 받는 것을 볼 수 있..

개발/iOS 2025.02.06