• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar

Spritekit

My WordPress site

  • Top
  • SpriteKitBase
    • Collision
    • Enumerated
    • Shooting
    • Breakout
    • Physics1
      • physics4
      • physics3
      • Physics2
  • SwiftUI&SpriteKit
    • TabScroll
    • LocalWebView
      • Counter
      • StateObject
      • Button
      • SceneMove
    • Swift Learning
  • Photo Gallery
    • Photo Galler 2
    • Photo Gallery 3
    • リンク
      • プロフィール
      • p5.play test

StateObject

04/02/2022 by kyougif

@StateObjectと@ObservedObjectの違い
StateObjectCounterは親Viewのcounterが更新されても値を保持しているのに対し、
OvservedObjectCounterは親Viewの値更新に伴い値が初期化されている。
ライフサイクルが異なる。
@ObservedObjectは親Viewが再描画される度(= 親Viewのプロパティが更新される度)に更新され、保持するViewが再描画される。
counter (親View)
StateObjectCounter (子View)
OvservedObjectCounter (子View)


import SwiftUI


struct ContentView: View {
@State var counter = 0
var body: some View {
VStack(alignment: .leading, spacing: 30) {
HStack {
Text("counter: \(counter)")
Button("count up") {
counter += 1
}
}
StateObjectCounter()
ObservedObjectCounter()
}
}
}

final class Counter: ObservableObject {
@Published var number = 0
func increment() { number += 1 }
func reset() { number = 0 }
}

struct StateObjectCounter: View {
@StateObject private var counter = Counter()
var body: some View {
HStack {
Text("StateObject: \(counter.number)")
Button("count up") {
counter.number += 1
}
Button("Reset") {
self.counter.reset()
}
}
}
}

struct ObservedObjectCounter: View {
@ObservedObject private var counter = Counter()

var body: some View {
HStack {
Text("OvservedObject: \(counter.number)")
Button("count up") {
counter.number += 1
}
}
}
}

Filed Under: Programming, swiftui

Primary Sidebar

最近の投稿

  • ObservableObj
  • SideMenu
  • TabScroll
  • Text
  • TappedNodes
  • Collision2
  • CoreMotion
  • Collision
  • Timer
  • Enumerated
  • Random
  • SwiftUI-List
  • Shooting
  • Sound
  • Camera
  • SpriteSheet
  • SKPhysics42
  • physics4
  • physics3
  • Physics2

アーカイブ

  • 2022年9月
  • 2022年8月
  • 2022年7月
  • 2022年6月
  • 2022年5月
  • 2022年4月
  • 2014年9月
  • 2014年5月

カテゴリー

  • Programming
  • spritekit
  • swiftui

固定ページ

  • Home
  • p5.play test
  • Photo Galler 2
  • Photo Gallery
  • Photo Gallery 3
  • Top
  • プロフィール
  • リンク

Copyright © 2026 · Genesis-child on Genesis Framework · WordPress · Log in