[SwiftUI] ObservedObject 의 배신

2022. 7. 12. 01:26Development/[iOS] Swift, ObjC

728x90

올 한해 방송 준비도 미흡했고 장기적 플랜으로 학습을 단단히 하고서 방송을 해야겠다는 생각으로 

잠을 줄여가면서 회사일을 하면서 개인사를 돌보며 학습겸 1인 프로젝트를 시작했다.

 

[ 도입한 주요 기술 스펙 ]

  • SpringBoot
    • 언어
      • Kotlin
    • ORM
      • JPA
    • 보안
      • Secure 와 JWT 기반 
  • DB
    • MariaDB
  • SwiftUI

 

WAS가 AWS인지 아닌지, 도커를 쓰는지 아닌지 (어차피...도커도 서서히 사향길에 접어들고 있다)

신기술인지 아닌지 그건 개발에 있어 중요하다고 생각하지 않는 편이다.

거대한 서비스를 어떻게 파트를 나누고 구성할 지, 어디부터 설계를 해나갈지를 스스로 고민하고 

어떻게 스타트를 끊고 진행을 해나갈지, 그리고 그걸 정말 "혼자서" 다 해낼 수 있는지가 제일 중요하다고 생각한다.

그래서 초기 구상과 학습을 하느라 꽤 시간을 많이 할애했다.

 

스프링 부트에 일부러 자바가 아닌 코틀린을 도입했고, ( 레퍼런스가 없고 더 어려우라고 )

MyBatis 를 걷어내고 JPA를 일부러 학습을 해서 Restful API를 구성했고, (JPA는 해본적이 없어서 더 고생해보라고)

프론트엔드였던 아이폰의 경우 StoryBoard 방식을 과감히 버리고 SwiftUI 의 선언적 구문 방식을 채용해보았다. (공부좀 하라고)

 

2년 반전쯤.. ios13이 나왔을때 swiftUI는 아직 멀었다고 얘기했던 내 유튜브 방송이 있는데,

지금쯤은 괜찮아졌겠지? 하는 생각으로 방송 준비겸 깊이있게 시도해보던 차에..

MVVM 모델의 기본이 되는 VM 담당의 핵심 키워드인 "ObservedObject" 이 굉장한 말썽을 일으켰다.

MVVM은 Model (데이터), View (화면 표시), ViewModel (데이터 핸들링) 으로 구성한 방식 

 

백엔드 구성 중에 만난 복병 내지는 고민중 하나였던 자체 CDN 서버 구축은..

라즈베리파이등을 통해서 내 가까운 곳에 하려다 그냥 서비스 로직으로 돌려 포기했지만

프론트엔드에서 만난 ObservedObject 버그 수정은 포기할 수가 없었다. (다른 방법이 없었으니까..)

 


ObservedObject는 뷰모델(ObservableObject)의 상태값을 손쉽게 참조하는 키워드 

 

분명 상태값이 변한것이 없는데 화면에 계속 사라지는 기이한 현상이 있어서 

다시 원론적으로 키워드의 용도를 학습해보던 중,

어느 개발자의 medium 의 글을 참조하게되었고, ObservedObject 키워드의 문제점(Apple에서도 인지하고 있었음)이 있다는 것을 깨달았다.

 

JAVA > C++ > Swift > Kotlin > Objective-C > Python 과 같은 순서로 언어를 체득해온 나라

딱히 신규 언어만을 바라보고 달려온건 아니지만.. 

 

배신감이란건 이런걸까?

믿었던 애플계의 최신 언어에도 맹점이 있었다니..

(최신 언어라 아직도 갈길이 멀었구나..아니 SwiftUI를 언어라고 말할수는 없지.. )

 

결국 해결책은 iOS14에서 지원된 StateObject 키워드로 바꾸니 기이한 현상들이 사라졌다..

장마전선이 내려오다 물러나듯 그렇게 고민도 사라졌다.

 

- 센치한 개발자로부터

 

 

 

 

728x90