@StateObject @UIApplidationDelegateAdapter - SwiftUI 2nd major release.

@StateObject @UIApplidationDelegateAdapter - SwiftUI 2nd major release.

SwiftUI 2の追加された重要定義について
SwiftUI でアプリ構築ができることになった影響について
@StateObject
@ApplicationDelegate

0fb0b8c6eecbc8e0a3981501f6a6fea6?s=128

notoroid

July 28, 2020
Tweet

Transcript

  1. !4UBUF0CKFDU !6*"QQMJDBUJPO%FMFHBUF"EBQUFS 4XJGU6*OENBKPSSFMFBTF

  2. ࣗݾ঺հ

  3. ೳొཁ !OPUPSPJE w J04ΞϓϦ։ൃऀ w ԰߸͍Γ·͢ిࢉاը w !OPUPSPJE w !JSJNBTV

    w ࠷ۙͷಈ޲ w ϒϩά࡮৽͠·ͨ͠
  4. ॆిใࠂ͞Μ #BUUFSFDFJWFS w όοςϦʔϞχλʔ ϢʔςΟϦςΟʔ  w ࠷େ୆ ࣮ػ ϦϞʔτ୆

     w ख࣋ͪͷJ1IPOF͔Βଞʹ͍࣋ͬͯΔ J1IPOF J1BEͳͲͷػثͷόοςϦʔঢ়ଶ֬ ೝՄೳ w ࣗ୐ʹ͋ΔJ1IPOFͷόοςϦʔঢ়ଶ֬ೝՄ ೳ
  5. ॆిใࠂ͞Μ #BUUFSFDFJWFS w "QQMF8BUDIରԠ w $PNQMJDBUJPOTରԠ w ॆి׬ྃ௨஌ w ॆి׬ྃΛ఻͑ͯ͘ΕΔ௨஌Λ௥Ճ

    w ҎԼʹࢦఆ͢Δ͜ͱͰόοςϦʔ ΛέΞ͢Δ͜ͱ͕Մೳ w Կ͔ͱߴ͍J1IPOFΛ௕࣋ͪͤ͞Δͷʹ༗ ༻
  6. ࿩͢͜ͱ w 4XJGU6*ͷ௥Ճ͞Εͨॏཁఆٛʹ͍ͭͯ w 4XJGU6*ͰΞϓϦߏங͕Ͱ͖Δ͜ͱʹͳͬͨӨڹʹ͍ͭͯ w !4UBUF0CKFDU w !"QQMJDBUJPO%FMFHBUF

  7. ࿩͞ͳ͍͜ͱ w 4XJGU6*ͷ௥Ճ͞Εͨ6* w 4XJGU6*ͷσόοά w 4XJGU6*ͷυΩϡϝϯταϙʔτ

  8. ୊໨ w 4XJGU6*͔ΒΈͨ4XJGU6* w 4XJGU6*ͰΞϓϦߏங w !4UBUF0CKFDU w !6*"QQMJDBUJPO%FMFHBUF"EBQUFS w

    ·ͱΊ
  9. 4XJGU6*͔ΒΈͨ4XJGU6*

  10. 4XJGU6*͔ΒΈͨ4XJGU6* w 4XJGU6*͔ΒͰ͖Δ͜ͱ͕രൃతʹ૿͑ͨ w υΩϡϝϯτϕʔεΞϓϦ΁ͷ஫ྗ͸4XJGU6*͔Βܧଓͯ͠ڧԽ w ίΞػೳ͸ϢʔςΟϦςΟతͳमਖ਼ʹͱͲ·Δ !4UBUF0CKFDUΛআ͍ͯ

  11. 4XJGU6*ͷ؆ܿͳهड़͸ !͔Β࢝·ΔఆٛʹΑΔ΋ͷ

  12. !ఆٛΛྻڍͯ͠ΈΔ

  13. 4XJGU6*ͷ!ఆٛ w !6*"QQMJDBUJPO%FMFHRBUF"EBQUFS w !4DBMFE.FUSJD w !&OWJSPONFOU w !4DFOF4UPSBHF w

    !4DFOF#VJMEFS w !4UBUF w !#JOEJOH w !0CTFSWFE0CKFDU w !1VCMJTI w !&OWJSPONFOU w !4UBUF0CKFDU
  14. w !4UBUF w !#JOEJOH w !0CTFSWFE0CKFDU w !1VCMJTI w !&OWJSPONFOU

    w !4UBUF0CKFDU 4XJGU6*ͷ!ఆٛ w !6*"QQMJDBUJPO%FMFHRBUF"EBQUFS w !4DBMFE.FUSJD w !&OWJSPONFOU w !4DFOF4UPSBHF w !4DFOF#VJMEFS 7JFX 7JFX಺Ͱঢ়ଶΛอ࣋ 7JFX಺Ͱঢ়ଶΛଋറ NVUBCMF 7JFX಺Ͱ0CTFSWBCMF0CKFDUอ࣋ 0CTFSWBCMF0CKFDU಺ͰࢦఆՄೳͳঢ়ଶڙڅݩ 1VCMJTIFS ؀ڥม਺
  15. 4XJGU6*ͷ!ఆٛ w !4UBUF w !#JOEJOH w !0CTFSWFE0CKFDU w !1VCMJTI w

    !&OWJSPONFOU w !4UBUF0CKFDU w !6*"QQMJDBUJPO%FMFHBUF"EBQUFS w !NBJO w !/BNFTQBDF w !4DBMFE.FUSJD w !4DFOF4UPSBHF w !4DFOF#VJMEFS
  16. w !4UBUF w !#JOEJOH w !0CTFSWFE0CKFDU w !1VCMJTI w !&OWJSPONFOU

    w !4UBUF0CKFDU w !6*"QQMJDBUJPO%FMFHBUF"EBQUFS w !NBJO w !/BNFTQBDF w !4DBMFE.FUSJD w !4DFOF4UPSBHF w !4DFOF#VJMEFS 4XJGU6*ͷ!ఆٛ ࠓճͷओ໾ "QQMJDBUJPO%FMFHBUFͷ୅໾ NBJO ؔ਺ͷ୅໾ ؀ڥఆٛΛม਺Ͱอ࣋Մೳ Ξχϝʔγϣϯ༻໊લۭؒ γʔϯ؀ڥม਺ ෳ਺ը໘࣋ͪγʔϯ༻
  17. w !4UBUF w !#JOEJOH w !0CTFSWFE0CKFDU w !1VCMJTI w !&OWJSPONFOU

    w !4UBUF0CKFDU w !6*"QQMJDBUJPO%FMFHBUF"EBQUFS w !NBJO w !/BNFTQBDF w !4DBMFE.FUSJD w !4DFOF4UPSBHF w !4DFOF#VJMEFS 4XJGU6*ͷ!ఆٛ ࠓճͷओ໾ "QQMJDBUJPO%FMFHBUFͷ୅໾ NBJO ؔ਺ͷ୅໾ ؀ڥఆٛΛม਺Ͱอ࣋Մೳ Ξχϝʔγϣϯ༻໊લۭؒ γʔϯ؀ڥม਺ ෳ਺ը໘࣋ͪγʔϯ༻
  18. 4XJGU6*Ͱ!͕͍ͭͨΒ$PNCJOF 'SBNFXPSL͕հࡏ͠෇ՃతͳػೳΛ ༩͍͑ͯΔͱࢥ͏΂͠

  19. !͕͍ͭͯ΋໊শ͕௚ײత͡Όͳ͍ ͱ͍͏͋ͳͨ

  20. 4XJGU6*͸શһελʔτϥΠϯ Έ͍ͨͳ΋ͷͳͷͰ ࠓ͕֮͑Ͳ͖Ͱ͢Αɻ

  21. JSJNBTVDPNTXJGUVJDPNCJOF GSBNFXPSLLFZQBUITXJGUVJ 4XJGU6*ΛֶͿ্Ͱ಄ʹೖΕ͓͖͍ͯͨ,FZ1BUIɺ$PNCJOFGSBNFXPSL ʹ͍ͭͯ͸೥݄ษڧձͰ࿩ͨ͠಺༰Λ֬ೝ

  22. 4XJGU6*ͰΞϓϦߏங

  23. 4XJGU6*ϕʔεͰΞϓϦߏங ͕ՄೳͱͳΓ·ͨ͠

  24. 4XJGU6*͕ΞϓϦߏங·Ͱԡ͠ਐΊͨཧ༝ w ϚϧνϓϥοτϑΥʔϜԽ J04 J1BE04 NBD04 UW04 XBUDI04  w

    ৽ͨͳ։ൃऀͷݺͼࠐΈ w ೥ϓϨΠϠʔ͕ΞϓϦ։ൃʹࢭ·ΔΘ͚΋ͳ͠ɺ૯ྔ΋૿͑ͳ͍ w 8FCϓϩάϥϚʹ਌࿨ੑΛΑΓߴͯ͘͠৽نࢀೖऀݺͼࠐΈ
  25. 4XJGU6*ͰΞϓϦߏங͸ ͲͷΑ͏ʹୡ੒͞Εͨ

  26. 4XJGU6*ͷߟ͑ํΛ ΞϓϦશମʹద༻

  27. None
  28. $PDPBGSBNFXPSL JNQPSU6*,JU !6*"QQMJDBUJPO.BJO DMBTT"QQ%FMFHBUF6*3FTQPOEFS 6*"QQMJDBUJPO%FMFHBUF\ WBSNPEFM.PEFM  GVODBQQMJDBUJPO @BQQMJDBUJPO EJE'JOJTI-BVODIJOH8JUI0QUJPOTMBVODI0QUJPOT

    #PPM\  SFUVSOUSVF ^ GVODBQQMJDBUJPO www \  ^   GVODBQQMJDBUJPO www \ ^ ^ DMBTT4DFOF%FMFHBUF6*3FTQPOEFS 6*8JOEPX4DFOF%FMFHBUF\
  29. 4XJGU6* JNQPSU4XJGU6* !NBJO TUSVDU46*5FTU"QQ"QQ\ WBSCPEZTPNF4DFOF\ 8JOEPX(SPVQ\ $POUFOU7JFX  ^ ^

    ^
  30. ྑ͍͜ͱʹΑ͏ʹࢥ͑Δ͕ʜ

  31. $PDPBGSBNFXPSL JNQPSU6*,JU !6*"QQMJDBUJPO.BJO DMBTT"QQ%FMFHBUF6*3FTQPOEFS 6*"QQMJDBUJPO%FMFHBUF\ WBSNPEFM.PEFM  GVODBQQMJDBUJPO @BQQMJDBUJPO EJE'JOJTI-BVODIJOH8JUI0QUJPOTMBVODI0QUJPOT

    #PPM\  SFUVSOUSVF ^ GVODBQQMJDBUJPO www \  ^   GVODBQQMJDBUJPO www \ ^ ^ DMBTT4DFOF%FMFHBUF6*3FTQPOEFS 6*8JOEPX4DFOF%FMFHBUF\ ΤϯτϦʔ ΦϒδΣΫτ ΦϒδΣΫτ Πϕϯτ Πϕϯτ Πϕϯτ
  32. 4XJGU6* JNQPSU4XJGU6* !NBJO TUSVDU46*5FTU"QQ"QQ\ WBSCPEZTPNF4DFOF\ 8JOEPX(SPVQ\ $POUFOU7JFX  ^ ^

    ^ ߏ଄ମ ΤϯτϦʔ ߏ଄ମ ߏ଄ମ
  33. None
  34. None
  35. ΞϓϦߏஙͷ໰୊఺ w $PDPBGSBNFXPSLͷ৔߹͸ɺΦϒδΣΫτͷߟ͑ํͷൣᙝͰΞϓϦߏங ͕Մೳ w 4JXGU6*Ͱ͸ɺΞϓϦߏங·Ͱ4XJGU6*ͷߟ͑ʹଇΔͷͰΦϒδΣΫτ Λ҆௚ʹ௥ՃͰ͖ͳ͍ w ΞϓϦͷΠϕϯτ͸ɺϓϥοτϑΥʔϜ͝ͱґଘ͍ͯ͠ΔͷͰɺϚϧνϓ ϥοτϑΥʔϜΛࢤ͢4XJGU6*ͱ૬༰Εͳ͍

  36. !4UBUF0CKFDU !6*"QQMJDBUJPO%FMFHBUF"EBQUFS

  37. !4UBUF0CKFDU w 4XJGU6*͕࠷ऴతʹϨϯμϦϯά͢ΔΦϒδΣΫτͱಉ͡ϥΠϑαΠΫϧ w 0CTFSWBCMF0CKFDUͷ೿ੜΫϥεͷΈΛࢦఆՄ w 4XJGU6*ͷߟ͑ํ͔Β͸গ͠֎ΕΔ͕ࣗવʹίʔυ͕ॻ͚Δ

  38. import SwiftUI @main struct FooApp: App { @StateObject var model

    = FooModel() var body: some Scene { WindowGroup { ContentView() .environmentObject(model) } } }
  39. !6*"QQMJDBUJPO%FMFHBUF"EBQUFS w ೥ͷஈ֊Ͱ΋ϓϥοτϑΥʔϜ͝ͱͷΞϓϦέʔγϣϯϑϨʔϜϫʔΫʹ ґଘ͢ΔՕॴ͸ଘࡏ w J044%,Ͱ͸6*"QQMJDBUJPO%FMFHBUFʹॏཁͳॲཧ͕಺ࡏ w ϓογϡ௨஌ͷొ࿥੒ޭࣦഊ w όοΫάϥ΢ϯυ௨஌ͷड͚औΓ

    w )BOEP⒎ͷৼΓ෼͚ w 4XJGU6*͕ΞϓϦߏஙΛ୲͍ͬͯΔ౎߹্6*"QQMJDBUJPO%FMFHBUFͷखஈΛఏڙ
  40. import UIKit class AppDelegate: UIResponder, UIApplicationDelegate { } import SwiftUI

    @main struct FooApp: App { @UIApplicationDelegateAdaptor(AppDelegate.self) private var appDelegate var body: some Scene { WindowGroup { ContentView() } } }
  41. αϯϓϧίʔυ !4UBUF0CKFDUͷڍಈΛ֬ೝͯ͠ΈΑ͏

  42. HJUIVCDPNOPUPSPJE 4UBUF0CKFDU$BUBMPH

  43. ౴͑߹Θͤ

  44. None
  45. !4UBUF0CKFDUࡶײ w ϨϯμϦϯά͞ΕͨΦϒδΣΫτͱಉ͡ϥΠϑαΠΫϧ w ࠩ͠ସ͕͑ൃੜ͠ͳ্͍ҐΦϒδΣΫτ "QQ 4DFOF Ͱѻ͍΍͍͢ w υΩϡϝϯτϕʔεΞϓϦͷͨΊʹ࡞ΒΕͨΑ͏ʹ΋Έ͑Δ

  46. ·ͱΊ w 4XJGU6*͸6*͕औΓ্͕͛ͪͰ͕͢ίΞఆٛ΋૿͍͑ͯ·͢ w 4XJGU6*ͰΞϓϦߏங͢ΔͱݹࢀͷΞϓϦ։ൃऀ΄ͲมԽΛڧ͍ΒΕ ·͢ w !4UBUF0CKFDU͸4JXGU6*ΞϓϦ։ൃͷ৭ʑͳ໰୊Λղܾ͠·͢