Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SwiftUIのObservationツールの挙動をテストしてみた

KenShih
March 13, 2025

 SwiftUIのObservationツールの挙動をテストしてみた

KenShih

March 13, 2025
Tweet

Other Decks in Programming

Transcript

  1. Today's Agenda • ಺༰ɿ • ҰॹʹαϯϓϧίʔυΛݟͯΈΔ • ObservationπʔϧͷڍಈΛਂ۷Γ͢Δ • ໨ඪɿ

    • ͜ΕΒͷπʔϧ͕Ͳ͏ಈ͘ͷ͔ཧղ͢Δ • Ͳ͏΍ͬͯϏϡʔͷ࠶ܭࢉΛҾ͖ى͜͢ͷֶ͔Ϳ
  2. @State͔Β࣍ͷεςοϓ΁ • γϯϓϧͳঢ়ଶ؅ཧʹ࢖͍΍͍͢ • ஋ܕ΍γϯϓϧͳϏϡʔʹ࠷ద • ࠓͷͱ͜ΖɺϏϡʔ಺ͷγϯϓϧͳঢ়ଶ؅ཧʹ޲͍͍ͯ·͢ • ෳࡶͳΞϓϦέʔγϣϯͰ͸… •

    ΞϓϦ͕ෳࡶԽ͢Δͱɺಈ͖ΛϏϡʔ͔Β෼͚Δඞཁ͕͋Γ·͢ • େ͖ͳϓϩδΣΫτͰ͸ɺ࠶ར༻ੑ΍ςετͷ͠΍͢͞ɺϝϯςφϯεੑ͕ॏཁ
  3. ओཁͳٕज़ᶄ @ObservedObject for ࢀরܕ • ໨తɿϏδωεϩδοΫΛ࣋ͭΫϥεͷσʔ λมԽΛ؂ࢹ͠ɺϏϡʔΛߋ৽͢Δ • खॱ: 1.

    ϞσϧΫϥεΛObservableObjectϓϩτ ίϧʹ४ڌͤ͞Δ 2. ؂ࢹର৅Λ@Publishedʹ͢Δ 3. ϏϡʔͰ@ObservedObjectΛ࢖༻͢Δ 1⃣ 2⃣ 3⃣
  4. @ObservedObjectͷಈ࡞ͷݕূ݁Ռͱݒ೦఺ • ݒ೦఺ • ࢖͍ํΛؒҧ͑͠΍͍͢Ͱ͢ • @PublishedΛ෇͚Δ͔ͷ൑அɹ • ͲͷϓϩύςΟʹ@PublishedΛ෇͚Δ͔ΛܾΊΔͷ͸೉͍͠Ͱ͢ɻ •

    ඞཁҎ্ʹϏϡʔ͕ߋ৽͞Εͯ͠·͏Մೳੑ͕͋Γ·͢ɻ • ϓϩύςΟʹ@Published͕෇͚Δͱɺ࢖༻͠ͳͯ͘΋ߋ৽͞Ε·͢ɻ • @Stateͷಈ࡞ͱٯͰ͢
  5. @Observable macroͷݕূ݁Ռ • Ϟσϧͷมߋ؅ཧ͕؆୯ʹ • Ϟσϧͷมߋ͕ϏϡʔʹͲ͏Өڹ͢Δ͔ΛࣗಈͰ؅ཧͰ͖ΔͷͰɺίʔυ͕γϯ ϓϧʹͳΓ·͢ɻ • γϯϓϧͳ࣮૷ •

    ϞσϧΛ@ObservableͰϚʔΫ͢Δ͚ͩ • @Published΍@ObservedObject͸ෆཁ • ωετ͞ΕͨϞσϧͰ΋εϜʔζʹಈ࡞͠·͢ɻ
  6. StructΛClassʹม׵͢΂͖͔ • @ObservableͷӨڹɿ • ڧྗ͕ͩɺΞϓϦશମͰࢀরܕΛ޿͛Δ͜ͱʹͳΔ • ࢀরܕ΁ͷγϑτ • ͜Ε·Ͱɺ७ਮͳϞσϧ૚ʹ͸஋ܕ͕࢖ΘΕ͖ͯͨ •

    ͔͠͠ɺAppleͷ࠷৽ͷαϯϓϧͰ͸ɺυϝΠϯλΠϓʹStructΛ࢖Θͳ͍ํ޲ʹਐΜͰ͍Δ • જࡏతͳσϝϦοτɿ • Struct͔ΒClassʹม͑Δͱɺ ෭࡞༻ͷ௥੻ͱσόοά͕೉͘͠ͳΔ • ϓϩτίϧʹࣗಈͰରԠ͢Δػೳ͕࢖͑ͳ͘ͳΔ
  7. Structͱ@Observableͷকདྷల๬ • কདྷతʹ͸ • Struct͕@ObservableΛαϙʔτ͢ΔՄೳੑ͕͋Γ·͢ɻ • ͜ΕʹΑΓɺ஋ܕͷར఺Λ׆͔ͭͭ͠ɺ@ObservableͷػೳΛར༻Ͱ͖Δ͔΋͠Ε·ͤΜɻ • ݱঢ়ͷ՝୊: •

    Struct͸ίϐʔ͕ൃੜ͠ɺΫϥεͷΑ͏ʹ҆ఆͨࣝ͠ผࢠΛ࣋ͨͳ͍ͨΊɺมߋͷ௥੻͕೉͍͠Ͱ ͢ɻ • ΫϥεͷΑ͏ͳ؍࡯ํ๏͕࢖͑ͳ͍ͨΊɺݴޠͷ࢓૊ΈΛݟ௚͢ඞཁ͕͋Γ·͢ɻ • Apple SwiftίϛϡχςΟͰ͜ͷٞ࿦͕ਐߦதͰ͢ɻSE-0395: Observability
  8. Recap • @Stateͱ@ObservedObject • @State: ஋ܕɺγϯϓϧͳঢ়ଶ؅ཧʹ࠷దɺ • @ObservedObject: ࢀরܕɺϏδωεϞσϧʹ࢖༻ɻͨͩ࢖༻͕೉͘͠ɺؒҧ͍΍͍͢ɻ •

    @ObservableϚΫϩ: • ৽ػೳ: iOS 17ͰಋೖɺσʔλมԽΛޮ཰తʹ؂ࢹɻ • ڧྗ͕ͩΫϥε΁ͷҠߦ: @Observableར༻ͷͨΊʹݕ౼͕ඞཁɻ • ࢀরܕͷར఺Λ׆͔ͤΔ͕ɺ෭࡞༻ͷ௥੻͕೉͍͠ɻ • কདྷͷల๬ • ߏ଄ମ͕@ObservableΛαϙʔτ͢ΔՄೳੑɻ