Slide 1

Slide 1 text

ͷϫʔχϯάͱઓ͑ ʂ 
 ͜Ε͸ܯࠂͩ ʂ  .PCJMF"DU04","

Slide 2

Slide 2 text

ࣗݾ঺հ w ͻΖΜʢҰٶߒڭʣ w 5XJUUFS (JU)VC 2JJUB 
 4MJEF4IBSF 4QFBLFS%FDL
 ˠIJSPOZUJD w גࣜձࣾ.FUB.P+Jʢಙౡۈ຿ʣ

Slide 3

Slide 3 text

ࠓ೥ͷग़དྷࣄ IUUQTNPOFZGPSXBSEDPNFOHJOFFST@CMPHPQUJPOBM

Slide 4

Slide 4 text

ࠓ೥ͷग़དྷࣄ ඇৗʹେ͖ͳαΠζͷ13Ͱ͋ͬͨ͜ͱ΍ɺഁյతมߋ͕ߦΘΕͨ4XJGU΁ͷରԠͩͬͨ͜ͱɺͦ΋ ͦ΋ݹ͔͘Βӡ༻͞Ε͍ͯΔϓϩμΫτͰ͋Δ͕Ώ͑ͷେྔͷܯࠂΛશͯ௵͖͠Ε͓ͯΒͣɺͦͷ·· ຒ΋Εͯ͠·ͬͨͱ͔͠ݴ͍Α͏͕ͳ͘ɺͱͯ΋ஏ͔͍ͣ͠ݶΓͰ͢ɻ IUUQTNPOFZGPSXBSEDPNFOHJOFFST@CMPHPQUJPOBM

Slide 5

Slide 5 text

ࠓ೥ͷग़དྷࣄ ඇৗʹେ͖ͳαΠζͷ13Ͱ͋ͬͨ͜ͱ΍ɺഁյతมߋ͕ߦΘΕͨ4XJGU΁ͷରԠͩͬͨ͜ͱɺͦ΋ ͦ΋ݹ͔͘Βӡ༻͞Ε͍ͯΔϓϩμΫτͰ͋Δ͕Ώ͑ͷେྔͷܯࠂΛશͯ௵͖͠Ε͓ͯΒͣɺͦͷ·· ຒ΋Εͯ͠·ͬͨͱ͔͠ݴ͍Α͏͕ͳ͘ɺͱͯ΋ஏ͔͍ͣ͠ݶΓͰ͢ɻ IUUQTNPOFZGPSXBSEDPNFOHJOFFST@CMPHPQUJPOBM

Slide 6

Slide 6 text

Θ͔Δʙ

Slide 7

Slide 7 text

w ࣮͸͜ͷ͜ΖɺฐࣾͷϓϩμΫτ΋
 ܯࠂ͕࢒ͬͨ··ʹͳ͍ͬͯͨ
 ʢͨͩ͠ɺ0CKFDUJWF$ʣ w Ұ౓͸ܯࠂΛ΄΅θϩʹ͍ͯͨ͠ͷ͕ͩɺ
 9DPEFͷόʔδϣϯΞοϓΛڥʹɺ
 ͍ͭͷؒʹ΍Β૿͍͑ͯͨʢݸʣ

Slide 8

Slide 8 text

IUUQTUXJUUFSDPN@NPOPTUBUVT

Slide 9

Slide 9 text

ͦͷ௨Γͩʜʂ

Slide 10

Slide 10 text

ͬͦ͘͞ܯࠂআڈʹͱΓ͔͔Δ ͱ͸͍͑ w ܯࠂআڈ͚ͩߦ͏·ͱ·ͬͨ࡞ۀظؒ͸֬อͰ͖ ͦ͏ʹͳ͍ͷͰɺ߹ؒͰͪΐͪ͜ΐ͜࡞ۀ w νʔϜϝϯόʔؒͷԹ౓ࠩ ܯࠂআڈΛ੝Γ্͛Δඞཁ͋Γʂ

Slide 11

Slide 11 text

4MBDLʹνϟϯωϧΛ࡞ͬͨ

Slide 12

Slide 12 text

ܯࠂ਺ͷભҠΛՄࢹԽ

Slide 13

Slide 13 text

ܯࠂΛফͬͯ͢Ͳ͏͍͏͜ͱʁ w ܯࠂˠจ๏తʹ͸ؒҧ͍ͬͯͳ͍͕ɺϓϩάϥ ϜϛεͷՄೳੑ͕͋Δ෦෼ͷࢦఠ w ܯࠂΛফ͢ˠ໰୊͕͋Ε͹मਖ਼͢Δɻ
 ͳ͚Ε͹ͦ͜ʹ໰୊͕ͳ͍͜ͱΛҙࢥදࣔ͢Δɻ

Slide 14

Slide 14 text

ҙࢥදࣔͷྫ UISwitch *hideSw = ... if (!hideSw.on != [defaults boolForKey:@"visible"]) { ... } if (!(hideSw.on != [defaults boolForKey:@"visible"])) ͷؒҧ͍͡Όͳ͍ͷʁͬͯ৺഑͞Ε͍ͯΔ Logical not is only applied to the left hand side of this comparison ˞9DPEFͰ͸͜ͷྫͰ͸ܯࠂ͕ग़·ͤΜͰͨ͠ UISwitch *hideSw = ... if ((!hideSw.on) != [defaults boolForKey:@"visible"]) { ... } ɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹʜͷͰ ΧοίΛ͚ͭͯͦ͏͡Όͳ͍ͱҙࢥදࣔ

Slide 15

Slide 15 text

ॱௐʹܯࠂ਺ΛݮΒ͍ͯͨ͠ͷ͕ͩʜ

Slide 16

Slide 16 text

9DPEF΁Ξοϓσʔτ

Slide 17

Slide 17 text

9DPEF΁Ξοϓσʔτ ܯࠂ਺͕Λ௒͑ͨʂ Χϯετ

Slide 18

Slide 18 text

*NQMJDJUSFUBJOPGTFMGXJUIJOCMPDLT w self͕҉໧తʹڧࢀর͞ΕΔΑɺͱ͍͏ܯࠂ w ΫϥεͷΠϯελϯεม਺ΛϒϩοΫͷதͰࢀর ͍ͯ͠Δͱ͜ΖͰग़Δ w ॥؀ࢀরͷૣظݕग़ʹ໾ཱͭ

Slide 19

Slide 19 text

*NQMJDJUSFUBJOPGTFMGXJUIJOCMPDLT @interface ViewController : UIViewController { WaitView *_waitView; } ... @end ΫϥεͷΠϯελϯεม਺ ˞ݱࡏ͸ɺΠϯελϯεม਺͸࢖Θͣʹɺ
 ϓϩύςΟΛ࢖͏͜ͱ͕ਪ঑͞Ε͍ͯ·͢ɻ

Slide 20

Slide 20 text

*NQMJDJUSFUBJOPGTFMGXJUIJOCMPDLT [AsyncUtils performActionOnMainThread:^{ _waitView.hidden = NO; }]; ϒϩοΫͷதͰ
 Πϯελϯεม਺Λࢀর _waitView͕ڧࢀর͞ΕΔͷͰ͸ͳͯ͘ɺ
 self͕ڧࢀর͞ΕΔ [AsyncUtils performActionOnMainThread:^{ self->_waitView.hidden = NO; }]; self->Λิ͑͹ɺҙࢥ දࣔʹΑΓܯࠂΛফͤΔ

Slide 21

Slide 21 text

ͳͥ݅΋ w 6*εϨουͰಉظతʹ࣮ߦ͢ΔϢʔςΟϦςΟϝ ιουΛ࡞͍ͬͯͨʢ4XJGUͳΒ@noescapeʣ w ίϯύΠϥ͕ಉظత͔Ͳ͏͔Θ͔Βͳ͍ͷͰɺ͢ ΂ͯܯࠂ͕ग़Δ w ͬ͟ͱݟͯɺͱ͘ʹ໰୊ͳ͍Օॴ͕ଟ͍

Slide 22

Slide 22 text

͜ͷܯࠂɺͲ͏ղܾ͢Δ͔ʁ "Ҋ໛ൣతͳղܾࡦʢ݅΋ͳ͚Ε͹ʣ w ܯࠂ͕ग़͍ͯΔՕॴΛਓ͕ؒݟͯ
 ໰୊͕ͳ͚Ε͹self->Λิ͏ w ղܾʹ͕͔͔࣌ؒΓ͗ͯ͢ɺ
 େྔͷܯࠂঢ়ଶ͕͋ͨΓ·͑ʹͳͬͯ͠·͏৺഑

Slide 23

Slide 23 text

͜ͷܯࠂɺͲ͏ղܾ͢Δ͔ʁ #Ҋ͜ͷܯࠂ͸ࣺͯΔ w ϓϩδΣΫτઃఆͰ*NQMJDJUSFUBJOPGTFMG XJUIJOCMPDLTͷܯࠂΛ/Pʹ͢Δ w ࠓޙ࣮૷͢Δ෦෼Ͱ΋ܯࠂ͕ग़ͳ͍

Slide 24

Slide 24 text

͜ͷܯࠂɺͲ͏ղܾ͢Δ͔ʁ $Ҋैདྷͷίʔυʹ͸໨ΛᛉΔ w ద౰ͳεΫϦϓτΛॻ͍ͯɺ
 ܯࠂ͕ग़͍ͯΔͱ͜ΖʹػցతʹTFMGΛิ͏ w ҙࢥදࣔͨ͜͠ͱʹͳΓɺ͜Ε͸ਖ਼͍͠ͱ͍͏
 ʮ͓๽෇͖ʯΛ༩͑ͯ͠·͏͜ͱʹͳΔ w ࠓޙͷ࣮૷Ͱ͸ܯࠂ͕ػೳ͢Δ

Slide 25

Slide 25 text

͜ͷܯࠂɺͲ͏ղܾ͔ͨ͠ʁ w "Ҋͱ$Ҋͷ྆ํΛ෦෼࠾༻ͨ͠ɻ w ֬ೝ͢Δҙࢥͷ͋Δ୲౰ऀʹ͸֬ೝͯ͠΋Βͬͯ खಈͰself->Λิͬͯ΋Β͏ɻ w ͦΕҎ֎ͷ෦෼͸ɺػցతʹself->Λิ͏ɻ ʢΑ͘ͳ͍͜ͱͱೝ্ࣝͨ͠Ͱ૬ஊͷ݁Ռʣ

Slide 26

Slide 26 text

ͦΜͳ͜Μͳ
 ͋ͬͯ

Slide 27

Slide 27 text

ܯࠂ਺ʹ౸ୡ

Slide 28

Slide 28 text

ͦͷޙͷܯࠂΛ૿΍͞ͳ͍ͨΊʹ w ܯࠂΛΤϥʔѻ͍ʹ͢Δʁ
 ʢ5SFBU8BSOJOHTBT&SSPSTΛ:FTʹʣ ‎σόοά࣌ʹ൥Θ͍͠ͷͰ͸ʁ w $*ͰͷϏϧυ࣌ʹݶΓɺܯࠂΛΤϥʔѻ͍ʹ w ܯࠂΛग़ͨ͠··ʹ͢Δͱ$*ʹౖΒΕΔ

Slide 29

Slide 29 text

·ͱΊ w ܯࠂআڈͷϞνϕʔγϣϯΞοϓઓུ w ܯࠂΛফ͢ͱ͸ʁˠίʔυʹର͢Δҙࢥදࣔ w 9DPEFͷόʔδϣϯΞοϓʹ൐͏݅ͷܯࠂ
 ϝϦοτɾσϝϦοτΛݕ౼ͯ͠ରॲ w ܯࠂΛ૿΍͞ͳ͍ͨΊͷ޻෉

Slide 30

Slide 30 text

IUUQTUPLVTIJNBBQQDPOOQBTTDPNFWFOU ݄೔ʹ͸ୈճΛ༧ఆʂ