[Swift] @StateObjectと@ObservedObject

@StateObjectを利用することで親ビューの再描画でオブジェクトが初期化されなくなる

ContentView.swift

struct ContentView: View {
    @State var isShow = true

    var body: some View {
        VStack (alignment: .leading, spacing: 20){
            ValueView1()
            ValueView2()
            
            Toggle(isOn: $isShow){
                
            }.frame(width: 50).padding(.top, 30)
            if isShow {
                Text("Hello, World!").font(.largeTitle)
            }
            Spacer()
        }
        .padding()
    }
}

struct ValueView2: View {
    @StateObject var maker = ValueMaker()
    
    var body: some View {
        VStack (alignment: .leading, spacing: 10){
            Text("\(maker.value)")
                .font(.title)
                .foregroundColor((maker.value > 0.8) ? .white : .gray)
                .background((maker.value > 0.8) ? Color.red : Color.white)
            HStack {
                Text("カウンタ:")
                Text("\(maker.counter)").font(.largeTitle)
            }
        }
        .background(Color.blue.opacity(0.3))
        .frame(width: 200, height: 80)
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
        ValueView1()
        ValueView2()
    }
}

ValueMarker.swift

class ValueMaker: ObservableObject {
    
    @Published var value: Double
    @Published var counter: Int = 0
    private var timer: Timer
    
    init() {
        value = 0.0
        timer = Timer()
        start()
    }
    
    func start(){
        timer = Timer.scheduledTimer(withTimeInterval: 0.5, repeats: true) {
            _ in
            self.value = Double.random(in: 0 ... 1)
            if self.value > 0.8 {
                self.counter += 1
            }
        }
    }
}

struct ValueView1: View {
    @ObservedObject var maker = ValueMaker()
    
    var body: some View {
        VStack (alignment: .leading, spacing: 10){
            Text("\(maker.value)")
                .font(.title)
                .foregroundColor((maker.value > 0.8) ? .white : .gray)
                .background((maker.value > 0.8) ? Color.red : Color.white)
            HStack {
                Text("カウンタ:")
                Text("\(maker.counter)").font(.largeTitle)
            }
        }
        .background(Color.yellow.opacity(0.3))
        .frame(width: 200, height: 80)
    }
}

なんかうまくいかんなー