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

addObserver: から考える API インタフェース

addObserver: から考える API インタフェース

NSNotificationCenter の addObserver が iOS9 から removeObserver しなくて良くなったので API の対称性から外れてしまったお話です

KAMEDAkyosuke

December 18, 2017
Tweet

Other Decks in Programming

Transcript

  1. BEE0CTFSWFS͔Βߟ͑
    Δ"1*ΠϯλϑΣʔε

    ,":"$ٕज़෦
    ُాژհ

    View Slide

  2. ࣗݾ঺հ
    w ,".&%"LZPTVLF
    w UXJUUFS!(FNNCV
    w UXJUDI!,".&%"LZPTVLF
    w J04"OESPJE&OHJOFFS
    w ࠇຐज़ಘҙ

    View Slide

  3. J04͔Β/4/PUJpDBUJPO$FOUFSͷ
    SFNPWF0CTFSWFS͠ͳͯ͘΋ྑ͘ͳͬ
    ͨͬͯ࿩ฉ͍ͨ͜ͱ͋Γ·͢ΑͶʁ
    BOESPJEͷํ͸#SPBEDBTUͷSFHJTUFS3FDFJWFSͨ͠ޙʹVOSFHJTUFS3FDFJWFS͠ͳͯ͘ྑ
    ͘ͳͬͨͱࢥ͍͚ͬͯͨͩΕ͹େৎ෉Ͱ͢ɻ

    View Slide

  4. υΩϡϝϯτ
    BEE0CTFSWFSTFMFDUPSOBNFPCKFDU
    %JTDVTTJPO
    *GZPVSBQQUBSHFUTJ04BOEMBUFSPSNBD04
    BOEMBUFS ZPVEPOUOFFEUPVOSFHJTUFSBOPCTFSWFSJO
    JUTEFBMMPDNFUIPE
    SFGTIUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOGPVOEBUJPOOTOPUJpDBUJPODFOUFS
    BEEPCTFSWFS MBOHVBHFPCKD

    View Slide

  5. ϦϦʔεϊʔτ
    /4/PUJpDBUJPO$FOUFS
    *O049BOEJ04/4/PUJpDBUJPO$FOUFSBOE
    /4%JTUSJCVUFE/PUJpDBUJPO$FOUFSXJMMOPMPOHFSTFOE
    OPUJpDBUJPOTUPSFHJTUFSFEPCTFSWFSTUIBUNBZCF
    EFBMMPDBUFE CMBICMBICMBI

    SFGTIUUQTEFWFMPQFSBQQMFDPNMJCSBSZDPOUFOUSFMFBTFOPUFT'PVOEBUJPO3/
    'PVOEBUJPO0MEFS/PUFTJOEFYIUNM9@/PUFT

    View Slide

  6. ϦϦʔεϊʔτ
    CMBICMBICMBI

    #MPDLCBTFEPCTFSWFSTWJBUIF4/PUJpDBUJPO$FOUFS
    BEE0CTFSWFS'PS/BNFPCKFDURVFVFVTJOH#MPDL>
    NFUIPETUJMMOFFEUPCFVOSFHJTUFSFEXIFOOPMPOHFS
    JOVTFTJODFUIFTZTUFNTUJMMIPMETBTUSPOHSFGFSFODF
    UPUIFTFPCTFSWFST
    SFGTIUUQTEFWFMPQFSBQQMFDPNMJCSBSZDPOUFOUSFMFBTFOPUFT'PVOEBUJPO3/
    'PVOEBUJPO0MEFS/PUFTJOEFYIUNM9@/PUFT

    View Slide

  7. ͋Εʁ

    View Slide

  8. #MPDLCBTFEPCTFSWFSTWJBUIF4/PUJpDBUJPO$FOUFS
    BEE0CTFSWFS'PS/BNFPCKFDURVFVFVTJOH#MPDL>
    NFUIPETUJMMOFFEUPCFVOSFHJTUFSFEXIFOOPMPOHFS
    JOVTFTJODFUIFTZTUFNTUJMMIPMETBTUSPOHSFGFSFODF
    UPUIFTFPCTFSWFST

    View Slide

  9. ͭ·Γ

    View Slide

  10. J04͔Β/4/PUJpDBUJPO$FOUFS
    ͷSFNPWF0CTFSWFS͠ͳͯ͘΋
    ྑ͘ͳͬͨ

    View Slide

  11. Ͱ͸ͳ͘

    View Slide

  12. J04͔Β/4/PUJpDBUJPO$FOUFSͷ
    BEE0CTFSWFS͸SFNPWF0CTFSWFS
    ͠ͳͯ͘΋ྑ͘ͳͬͨ

    View Slide

  13. ͜ΕΛ;·͑ͯ

    View Slide

  14. ͦ΋ͦ΋SFNPWF0CTFSWFS
    ͠ͳͯ͘Α͍ͬͯྑ͍͜ͱʁ

    View Slide

  15. ϓϩάϥϛϯάͷ͓࡞๏
    w ϝϞϦΛ֬อͨ͠Β
    w ϑΝΠϧΛ։͍ͨΒ
    w τϥϯβΫγϣϯΛ։࢝ͨ͠Β
    w 5$1ιέοτΛ։͍ͨΒ

    View Slide

  16. ϓϩάϥϛϯάͷ͓࡞๏
    w ϝϞϦΛ֬อͨ͠Βղ์͠ͳ͚Ε͹ͳΒͳ͍
    w ϑΝΠϧΛ։͍ͨΒด͡ͳ͚Ε͹ͳΒͳ͍
    w τϥϯβΫγϣϯΛ։࢝ͨ͠Βऴྃ͠ͳ͚Ε͹ͳΒͳ͍
    w 5$1ιέοτΛ։͍ͨΒด͡ͳ͚Ε͹ͳΒͳ͍

    View Slide

  17. BEESFNPWF0CTFSWFS
    ͸Ͳ͏Ͱ͠ΐ͏͔ʁ

    View Slide

  18. View Slide

  19. ͍͔ͭ͘ͷΫϥεΛ֬
    ೝͯ͠Έ·͠ΐ͏

    View Slide

  20. 8,)551$PPLJF4UPSF
    %JTDVTTJPO
    5IFDPPLJFTUPSFEPFTOPUNBJOUBJOBTUSPOH
    SFGFSFODFUPUIFPCTFSWFS:PVBSFSFTQPOTJCMFGPS
    SFNPWJOHUIFPCTFSWFSCFGPSFJUCFDPNFTJOWBMJE
    SFGTIUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOXFCLJUXLIUUQDPPLJFTUPSF
    BEEPCTFSWFS

    View Slide

  21. "71MBZFS
    BEE1FSJPEJD5JNF0CTFSWFS'PS*OUFSWBMRVFVFVTJOH#MPDL
    %JTDVTTJPO
    :PVNVTUNBJOUBJOBTUSPOHSFGFSFODFUIFSFUVSOFE
    WBMVFBTMPOHBTZPVXBOUUIFUJNFPCTFSWFSUPCF
    JOWPLFECZUIFQMBZFS&BDIJOWPDBUJPOPGUIJTNFUIPE
    TIPVMECFQBJSFEXJUIBDPSSFTQPOEJOHDBMMUP
    SFNPWF5JNF0CTFSWFS3FMFBTJOHUIFPCTFSWFSPCKFDU
    XJUIPVUJOWPLJOHSFNPWF5JNF0CTFSWFSXJMMSFTVMUJO
    VOEFpOFECFIBWJPS
    SFGTIUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOBWGPVOEBUJPOBWQMBZFS
    BEEQFSJPEJDUJNFPCTFSWFSGPSJOUFSW MBOHVBHFPCKD

    View Slide

  22. ϓϩάϥϛϯάͷ͓࡞๏
    w SFHJTUFSͨ͠ΒVOSFHJTUFS͠ͳ͚Ε͹ͳΒͳ͍

    View Slide

  23. ͭ·Γ
    /4/PUJpDBUJPO$FOUFSͷBEE0CTFSWFS͸
    SFNPWF0CTFSWFS͠ͳͯ͘΋ྑ͘ͳ͚ͬͨͲɺϓϩάϥϛ
    ϯάͷ͓࡞๏ͱͯ͠͸ྑ͘ͳ͍ʂʂ

    View Slide

  24. /4/PUJpDBUJPO$FOUFS ͦΕҎ֎ͷΫϥε
    SFNPWF0CTFSWFS͠ͳ͍ ໰୊ͳ͠ ໰୊͋Γ
    SFNPWF0CTFSWFS͢Δ ໰୊ͳ͠ ໰୊ͳ͠
    දʹ͢Δͱ

    View Slide

  25. ࢲͨͪͷνʔϜͰ͸
    w SFHJTUFSVOSFHJTUFS BEESFNPWF0CTFSWFS
    ͸͓࡞๏
    w /4/PUJpDBUJPO$FOUFS͚ͩྫ֎ͷঢ়ଶͰ͸Ή͠ΖଞͷΫ
    ϥεͰؒҧ͑ΔڪΕ͕͋Δ
    w ͳͷͰSFNPWF0CTFSWFSΛৗʹॻ͘ํ਑ʹͱ͍͏͔
    BEE0CTFSWFS'PS/BNFPCKFDURVFVFVTJOH#MPDLΛ࢖
    ͏͜ͱʹ

    View Slide

  26. ·ͱΊ
    w "1*ͷΠϯλϑΣʔε͸ͦΕࣗ਎͚ͩͰͳ͘ଞͷΫϥε΍
    ϑϨʔϜϫʔΫ౳͔ΒܾΊΔ΂͖
    w ͳͷͰɺ͋Δ"1*ͷ࢖༻ํ๏͕มΘ͔ͬͨΒͱ͍ͬͯଞ
    ͷΫϥεͱͷؔ࿈ʹ஫ҙ͢΂͖
    w ͦͷ্Ͱࣗ෼ͷϓϩδΣΫτʹͲ͏औΓ૊Ή͔ܾΊ·͠ΐ
    ͏

    View Slide