Run loop - codeport/ios GitHub Wiki
Main event loop
๋ฉ์ธ ์ด๋ฒคํธ ๋ฃจํ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค์ด์ค๋ ์ด๋ฒคํธ๋ค์ ๊ฐ์ฒด๊ฐ ์ฒ๋ฆฌํ ์ ์๋๋ก ๊ณ์ํด์ ๋ผ์ฐํ ํ๊ณ ์ฒ๋ฆฌ๊ฒฐ๊ณผ๋ก UI์ ์ํ๋ฅผ ์ ๋ฐ์ดํธ ํ๋ค. ์ด๋ฒคํธ ๋ฃจํ๋ ๊ฐ๋จํ๊ฒ ๋ฐ๋ฃจํ(run loop)์ด๋ค: ์ค์ผ์ฅด๋ง๋ ์ผ๊ณผ ์ด๋ฒคํธ-ํ๋ก์ธ์ฑ ๋ฃจํ์ ์ฌ๋ฌ๊ฐ์ง ์ธํ์์ค์์ ๋ฐ์ํ ์ด๋ฒคํธ์ ์ขํ๋ค์ ๋ฐ๋ฃจํ์ ์ถ๊ฐ๋๋ค. ๋ชจ๋ ์ฐ๋ ๋๋ ๋ฐ๋ฃจํ์ ์ ๊ทผํ๋ค. ํ์ง๋ง ๋ชจ๋ ๋ฉ์ธ์ฐ๋ ๋์์ ๋ฐ๋ฃจํ๋ ๋ฐ๋์ ์ค์ ๋๊ณ ์ฝ๋์์ ์๋์ ์ผ๋ก ์คํ๋์ด์ผ ํ๋ค. ์ฝ์ฝ์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฉ์ธ์ฐ๋ ๋๋ฅผ ์ํ ๋ฐ๋ฃจํ(๋ฉ์ธ ์ด๋ฒคํธ ๋ฃจํ)๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ์ฒด์ ์ํด์ ์๋์ ์ผ๋ก ์คํ๋๋ค. ๋ฉ์ธ ์ด๋ฒคํธ ๋ฃจํ๋ฅผ ๊ตฌ๋ณํด ์ฃผ๋ ๊ฒ์ ์ฃผ ์ธํ์์ค๊ฐ ์ฌ์ฉ์์ก์ ์ผ๋ก ์ธํ ์ด๋ฒคํธ๋ฅผ OS๋ก๋ถํฐ ๋ฐ๋๋ค๋ ๊ฒ์ด๋ค. ์๋ฅผ ๋ค์ด ํ๋ฉด์ ํญํ๊ฑฐ๋ ํค๋ณด๋๋ฅผ ์ฌ์ฉํด์ ๊ธ์๋ฅผ ์ ๋ ฅํ๋ ๊ฒ์ด๋ค.
The Application Object Gets and Dispatches Events
์ ํ๋ฆฌ์ผ์ด์ ์ด ์์๋ ์งํ ๋ฉ์ธ ์ด๋ฒคํธ ๋ฃจํ๋ฅผ ์ํ ๊ธฐ๋ฐ์ ์ค์ ํ๋ค. ๋ก์ฐ๋ ๋ฒจ ์ ์ ์ด๋ฒคํธ๋ฅผ ์ ๋ฌํ ์ฑ ์์ด ์๋ ์์กด ์์คํ ์ปดํฌ๋ํธ์ ์ฐ๊ฒฐ์ ํ๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๋ฌํ ์ด๋ฒคํธ๋ฅผ ๋ฉ์ธ ์ฐ๋ ๋์ ๋ฐ๋ฃจํ์ ์ค์น๋ ์ธํ์์ค๋ฅผ ํตํด์ ๋ฐ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ ์ด๋ฒคํธ๋ฅผ ๋์ฐฉํ๋ ์์๋๋ก ๋ณ๋๋ก ์ฒ๋ฆฌํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ๋ก์ฐ๋ ๋ฒจ ์ด๋ฒคํธ๋ FIFO ์ด๋ฒคํธ ํ์ ๋ค์ด๊ฐ๋ค.
์ต์ด ์ ์ ์ธํฐํ์ด์ค๊ฐ ํ๋ฉด์ ๋ํ๋๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ธ๋ถ ์ด๋ฒคํธ์ ์ํด์ ์ฃผ๋๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ์ฒด๋ ์ด๋ฒคํธ ํ์ ์ต์์์ ์๋ ๊ฐ์ฒด๋ฅผ ์ทจํด์ ์ด๋ฒคํธ ๊ฐ์ฒด๋ก ๋ณํํ๊ณ (iOS์์๋ UIEvent์ด๊ณ Mac OSX์์๋ NSEvent์ด๋ค) ์ฒ๋ฆฌํ๊ธฐ ์ํด์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค๋ฅธ ๊ฐ์ฒด๋ก ๋์คํจ์นํ๋ค. ๋์คํจ์น๋ ์ด๋ฒคํธ๊ฐ ๋์์์ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์์ ๋ค์ ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์์ ๋์คํจ์นํ๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ข ๋ฃ๋ ๋ ๊น์ง ์ด๊ฒ์ ๊ณ์ ํ๋ค.
Core Objects Respond to Events and Draw the User Interface
๋ํ ์ ํ์ด์ผ์ด์ ์ด ์คํ๋์์ ๋ UI๋ฅผ ๊ทธ๋ฆฌ๊ณ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ ์ฑ ์์ ๊ฐ์ง ๊ฐ์ฒด๋ค์ ์ฝ์ด๊ทธ๋ฃน์ ์ค์ ํ๋ค. ์ด๋ฌํ ์ฝ์ด ๊ฐ์ฒด๋ค์ winodws์ ์ฌ๋ฌ ์ข ๋ฅ์ view๋ฅผ ํฌํจํ๋ค. ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ์ฒด๊ฐ ์ด๋ฒคํธ ํ์์ ์ด๋ฒคํธ๋ฅผ ์ป์์ ๋ ์ ์ ์ด๋ฒคํธ๊ฐ ์ผ์ด๋ ์๋์ฐ์ ๊ทธ๊ฒ์ ๋์คํจ์นํ๋ค. ์๋์ฐ๋ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ์ ๊ฐ์ฅ ์ ์ ํ ํธ๋ค๋ฌ์ธ ๋ทฐ์ ๋ณด๋ธ๋ค:
- ๋ฉํฐํฐ์น์ ๋ง์ฐ์ค์ด๋ฒคํธ์์ ๋ทฐ๋ ํฐ์น๋ ๋ง์ฐ์ค ํฌ์ธํฐ ์๋ ์๋ค.
- ํค๋ณด๋, ๋ชจ์ , ๊ทธ์ธ ์ด๋ฒคํธ์์๋ ๋ทฐ๋ ์ต์ฐ์ ์๋ต์์ด๋ค.
์ด ์ต์ด์ ๋ทฐ๊ฐ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ์ง ์๋๋ค๋ฉด ๊ทธ๊ฒ์ ์๋ต์ ์ฒด์ธ(responder chain)์ ํตํด์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค๋ฅธ ๋ทฐ๋ก ์ ๋ฌ๋ ์ ์๋ค.
์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌ์์ ๋ทฐ๋ ์ข ์ข ์ ํ๋ฆฌ์ผ์ด์ ์ ์ธ๊ด์ ์์ ํ๊ณ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํธ ํ๋ ์ผ๋ จ์ ์ก์ ๋ค์ ์ด๊ธฐํํ๋ค. ์ด๋ฌํ ์ก์ ์ด ์๋ฃ๋๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ์ ์ด๊ฐ ๋๋ ค์ ธ์ ์ด๋ฒคํธํ๋ก๋ถํฐ ๋ค์ ์ด๋ฒคํธ๋ฅผ ์ทจํ๋ค.