inflearn logo
inflearn logo

ใ‚ขใƒฉใƒณ iOS Concurrency๏ผˆๅŒๆ™‚ๅฎŸ่กŒ๏ผ‰ - ใƒ‡ใ‚ฃใ‚นใƒ‘ใƒƒใƒใ‚ญใƒฅใƒผใจใ‚ชใƒšใƒฌใƒผใ‚ทใƒงใƒณใ‚ญใƒฅใƒผใฎ็†่งฃ

ๅŒๆ™‚ๅฎŸ่กŒ๏ผˆConcurrency๏ผ‰ - iOSใƒ—ใƒญใ‚ฐใƒฉใƒŸใƒณใ‚ฐใงๅฟ…่ฆใชๅŒๆœŸใ€้žๅŒๆœŸใฎๆฆ‚ๅฟตใ€ใŠใ‚ˆใณใใ‚Œใ‚’ๆ‹กๅผตใ—ใŸGCDใจOperationใซ้–ขใ™ใ‚‹ใ™ในใฆใฎใ‚‚ใฎใ‚’ใ‚ซใƒใƒผใ—ใพใ™ใ€‚

้›ฃๆ˜“ๅบฆ ๅˆ็ดš

ๅ—่ฌ›ๆœŸ้–“ ็„กๅˆถ้™

iOS
iOS
Swift
Swift
concurrent
concurrent
iOS
iOS
Swift
Swift
concurrent
concurrent
allen๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€

ใชใœUIใ‚’ใƒกใ‚คใƒณใ‚นใƒฌใƒƒใƒ‰ใงๆ›ดๆ–ฐใ™ใ‚‹ใฎใงใ™ใ‹๏ผŸ

ใ“ใ‚“ใซใกใฏใ€ไน…ใ—ใถใ‚Šใซใƒ‹ใƒฅใƒผใ‚นใงๆŒจๆ‹ถใ—ใพใ™ใ€‚

้•ใ„ใฏใ‚ใ‚Šใพใ›ใ‚“ใ€

ใชใœUIใ‚’ใƒกใ‚คใƒณใ‚นใƒฌใƒƒใƒ‰ใงๆ›ดๆ–ฐใ™ใ‚‹ใฎใงใ™ใ‹๏ผŸใจใ„ใ†่ณชๅ•ใซๅฏพใ™ใ‚‹่‰ฏใ„ๆ–‡ใŒใ‚ใ‚Šใ€่งฃ้‡ˆๆœฌใ‚’ไฝœใ‚‹ใ“ใจใซใชใฃใฆๅ…ฑๆœ‰ใ—ใ‚ˆใ†ใจใ—ใพใ™ใ€‚

ใ‚‚ใ—ใ‚‚่‰ฏใ„ๅ‚่€ƒ่ณ‡ๆ–™ใซใชใฃใฆใปใ—ใ„ใงใ™ใ€‚

๏ผˆ่จ˜ไบ‹ใฎใ‚ชใƒชใ‚ธใƒŠใƒซใ‚ฝใƒผใ‚น๏ผ‰

https://medium.com/@duwei199714/ios-why-the-ui-need-to-be-updated-on-main-thread-fd0fef070e7f

๏ผˆ่งฃ้‡ˆๆœฌpdf่ณ‡ๆ–™๏ผ‰

https://drive.google.com/file/d/1dFw6sJsxV-huK3BoHXgDq-7rXy9yBq9l/view?usp=sharing

็ฐกๅ˜ใซใพใจใ‚ใ‚‹ใจใ€

1๏ผ‰ UIKitใฎใ™ในใฆใฎๅฑžๆ€งใ‚’Thread-safeใซ่จญ่จˆใ™ใ‚‹ใจใ€้…ใใชใ‚‹ใชใฉใฎๆ€ง่ƒฝไฝŽไธ‹ใŒ็™บ็”Ÿใ™ใ‚‹ๅฏ่ƒฝๆ€งใŒใ‚ใ‚‹ใŸใ‚ใ€ใใฎใ‚ˆใ†ใซ่จญ่จˆใ™ใ‚‹ใ“ใจใฏใงใใพใ›ใ‚“ใ€‚ ๏ผˆThread-safeใ—ใชใ„ใ‚ˆใ†ใซ่จญ่จˆใ—ใŸใฎใฏAppleใฎๆ„ๅ›ณใ ใ€‚๏ผ‰

2)ใƒกใ‚คใƒณใƒฉใƒณใƒซใƒผใƒ—(Runloop)ใŒใƒ“ใƒฅใƒผใฎๆ›ดๆ–ฐใ‚’็ฎก็†ใ™ใ‚‹View Drawing Cycleใ‚’้€šใ˜ใฆใƒ“ใƒฅใƒผใ‚’ๅŒๆ™‚ใซๆ›ดๆ–ฐใ™ใ‚‹ใใฎใ‚ˆใ†ใช่จญ่จˆใ‚’้€šใ˜ใฆๅ‹•ไฝœใ—ใฆใ„ใ‚‹ใŒใ€(ใƒกใ‚คใƒณใ‚นใƒฌใƒƒใƒ‰ใงใฏใชใ„)ใƒใƒƒใ‚ฏใ‚ฐใƒฉใ‚ฆใƒณใƒ‰ใ‚นใƒฌใƒƒใƒ‰ใŒใใ‚Œใžใ‚Œใฎใƒฉใƒณใƒซใƒผใƒ—ใงใใฎใ‚ˆใ†ใชๅ‹•ไฝœใ‚’ใซใชใฃใŸใจใใ€ใƒ“ใƒฅใƒผใŒๅ‹ๆ‰‹ใซๅ‹•ไฝœใ™ใ‚‹ๅฏ่ƒฝๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚  ๏ผˆไพ‹ใˆใฐใ€ใƒ‡ใƒใ‚คใ‚นใ‚’ๅ›ž่ปขใ™ใ‚‹ใจใ€ๅŒๆ™‚ใซใƒ“ใƒฅใƒผใฎใƒฌใ‚คใ‚ขใ‚ฆใƒˆใŒๅ†้…็ฝฎใ•ใ‚Œใ‚‹ใ‚ˆใ†ใชๅ‹•ไฝœใŒใงใใชใใชใ‚‹ๅฏ่ƒฝๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚๏ผ‰

3๏ผ‰ iOSใŒๆ็”ปใ™ใ‚‹ๆ็”ปใƒ—ใƒญใ‚ปใ‚น๏ผˆใ‚ณใ‚ขใ‚ขใƒ‹ใƒกใƒผใ‚ทใƒงใƒณ - >ใƒฌใƒณใƒ€ใƒชใƒณใ‚ฐใ‚ตใƒผใƒใƒผ - > GPU - >่กจ็คบ๏ผ‰ใŒใ‚ใ‚Šใพใ™ใŒใ€่ค‡ๆ•ฐใฎใ‚นใƒฌใƒƒใƒ‰ใ‹ใ‚‰ใใ‚Œใžใ‚Œใฎใƒ“ใƒฅใƒผใฎๅค‰ๆ›ดGPUใซ้€ใ‚‹ใจใ€GPUใฏใใ‚Œใžใ‚Œใฎๆƒ…ๅ ฑใ‚’ใ™ในใฆ่งฃ้‡ˆใ™ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚‹ใŸใ‚ใ€้…ใใชใ‚Šใพใ™ใ€‚ ใ€้žๅŠน็އ็š„ใงใ‚ใ‚‹ๅฏ่ƒฝๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚

4) Textureใ‚„ComponentKitใจใ„ใ†Facebookใง้–‹็™บใ—ใŸ้žๅŒๆœŸ็š„ใชUIใƒ•ใƒฌใƒผใƒ ใƒฏใƒผใ‚ฏใŒใ‚ใ‚‹ใŒใ€View Drawing CycleใŒๅŒๆง˜ใฎๆ–นๆณ•ใง้ฉๅˆ‡ใชใ‚ฟใ‚คใƒŸใƒณใ‚ฐใงใƒกใ‚คใƒณใ‚นใƒฌใƒƒใƒ‰ใงๅŒๆ™‚ใซๆ›ดๆ–ฐใ™ใ‚‹ใ‚ˆใ†ใซใ—ใฆใ„ใ‚‹ใ€‚

ใ“ใ‚Œใปใฉ  ๅ†…ๅฎนใงใ™ใ€‚ๅฎŸ้š›ใ€iOSใ ใ‘ใงใชใWindowsใ‚„ไป–ใฎOSใงใ‚‚ๅŒๆง˜ใซใ€ใ“ใฎใ‚ˆใ†ใชไธŠ่จ˜ใฎๅŒๆง˜ใฎๆง˜ใ€…ใช็†็”ฑใฎใŸใ‚ใ€ๆง‹้€ ็š„ใซใƒกใ‚คใƒณใ‚นใƒฌใƒƒใƒ‰ใงใฎใฟUIใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆใŒใงใใ‚‹ใ‚ˆใ†ใซใ—ใฆใ„ใ‚‹ใฎใงใฏใชใ„ใ‹ใ€ใพใŸ่€ƒใˆใฆใฟใ‚‹ๆ–‡ใงใ—ใŸใ€‚

ใŸใ ไธ€ๅบฆ่€ƒใˆใฆใฟใ‚‹ใ“ใจใŒใงใใ‚‹ใƒ†ใƒผใƒžใงใ™ใ€‚

ใ‚ใ‚ŠใŒใจใ†ใ”ใ–ใ„ใพใ™ใ€‚

ใ‚ณใƒกใƒณใƒˆ 1
    rarebook922604๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€

    ๅฎŒๅ…จใซ็†่งฃใฏใงใใพใ›ใ‚“ใงใ—ใŸใŒใ€ใ‚‚ใฃใจๆ นๆœฌ็š„ใช็†็”ฑใ‚’็Ÿฅใ‚‹ใ“ใจใŒใงใใฆใ‚ˆใ‹ใฃใŸใงใ™๏ผ

๏ฟฅ8,300