SeceneDelegate과 AppDelegate를 공부하던 도중 의문이 들었다. 원래는 하나의 앱만 킬 수 있었는데, iOS13이후로 padOS로 분리가 되면서 동시에 앱을 킬 수 있게 되었다라는 사실을 알게 되었는데, 궁금한점은 뭐였냐면,
같은 앱을 동시에 켰을때 Class의 메모리를 공유하는지 궁금해졌다. 일단 그냥 class로 하고, 안되면 싱글톤패턴으로 실험을 진행할 예정이였다. 뷰는 매우 매우 간단하게 SwiftUI로 작성하였다.
실험 결과는?
!!!
작아서 잘 안보이지만, 양쪽에 같은 앱을 켜놓고 각 아무거나의 버튼을 눌러도 둘다 동시에 뷰가 리프레시 되면서 카운트가 올라가는걸 발견 할 수 있었다.
이건 안됨
+) 웃긴거 발견
StateObject로 뷰모델을 가져오면 안됨...
레퍼런스에서 한 문구를 봤는데, 상태 변경이 있을땐 @ObjervedObject는 뷰를 다시 생성해서 그리지만, @StateObject는 뷰를 다시 생성하지 않고 항상 동일한 뷰가 사용 (효율) 이라고 적힌 글을 봄.
그런데, 단순히 뷰를 리프레시 하지 않는거면, 왼쪽을 눌러서 1 0 이 되고, 오른쪽을 누르면 기존에 count가 있으니까 1 2가 되어야만 하는거 아닌가?
메모리 주소가 다름;