Button ์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ง ์ค๋ธ์ ํธ ์ฌ๋ฌ ๊ฐ์ ๊ฐ๊ฐ ๋ฉ์๋๋ฅผ ํ ๋นํ๊ณ ์ถ์๋
์์ฒ๋ผ ์คํฌ๋ฆฝํธ๋ฅผ ์ง๋ฉด for ๋ฌธ์ ๊ฑฐ์ณ i ๊ฐ 0๋ถํฐ ์์ํด
btns[0] ์๋ BtnClicked(0) ์ด ํ ๋น๋๊ณ
btns[1] ์๋ BtnClicked(1) ์ด ํ ๋น๋๊ณ
...
btns[i] ์๋ BtnClicked(i) ์ด ํ ๋น๋ ๊ฑฐ๋ผ ์๊ฐํ์ง๋ง ์ค์ ๋ก ๊ทธ๋ ์ง ์๋ค.
์ค์ ๋ก๋ ๋ชจ๋ btns ์ BtnClicked(btns.Length+1) ์ด ํ ๋น ๋๋ฉฐ ์ด๋ฐ ๋ฌธ์ ๋ฅผ Closure Problem ์ด๋ผ ํ๋ค.
Closure ๋ ๋๋ค์(๋๋ ๋ฌด๋ช ๋ฉ์๋)์ด ์ง์ญ๋ณ์๋ฅผ ์ฌ์ฉํ ๋ ํด๋น ๋๋ค์์ Closure ๋ผ๊ณ ํ๋ฉฐ,
Closure ๋ ์ง์ญ๋ณ์์ ๊ฐ์ ๊ฐ์ ธ์ค๋๊ฒ ์๋ ์ง์ญ๋ณ์ ์์ฒด๋ฅผ ์ฐธ์กฐํ๊ธฐ ๋๋ฌธ์
์ปดํ์ผ์ด ๋๋๊ณ ๋์์ ์ง์ญ๋ณ์ ๊ฐ์ ๋ถ๋ฌ์ค๊ฒ ๋๋ค.
for ๋ฌธ์ i๋ 0๋ถํฐ ์์๋์ด btns.Length+1 ์ ๋๋ฌํ๋ฉด ๋ฐ๋ณต์ ์ค์งํ๊ณ ย btns.Length+1์์ ๋ฉ์ถ๋ค.
์ด ๋ AddListener ๋ ํด๋น ๋ฒํผ์ BtnClicked(i), ์ฆ BtnClicked(btns.Length+1)์ ํ ๋น์ํจ๋ค.
๊ทธ๋ฌ๋ฉด ์ด๋ป๊ฒ ํด์ผ ์๋๋๋ก ํ๋ฌ๊ฐ๊น?
๊ฐ๋จํ๊ฒ๋ for๋ฌธ ๋ด๋ถ์ ์๋ก ๋ณ์๋ฅผ ์ ์ธํ๊ณ i ๊ฐ์ ๋ฐ์์ฃผ๋ฉด ๋๋ค.
AddListener๊ฐ ์ ๋ฌํ๋ copy ๊ฐ์ for๋ฌธ์ด ๋ฐ๋ณตํ ๋๋ง๋ค ์๋ก ์ ์ธ๋์ด ํด๋น ๊ฐ์ ์ ๋ฌํ๊ธฐ ๋๋ฌธ์
์๋ํ ๋๋ก ํ๋ฌ๊ฐ๊ฒ ๋๋ค.
๋ชฐ๋์ผ๋ฉด ๊ฐ์ถ
https://mentum.tistory.com/343?category=1015657
์ด๊ธ
์์ฑ์์? ใ ใ
๋ด๊ธ๋ณด๋ค ๊น๋ํ๋ค? ์ด ์ด๋ฐ๋ค?
๋๋ ์ด๊ฑฐ ์์ ์ ๋ชฐ๋์ ์ด๊ฑฐ ํ๋ฉด์ ์๊ฒ๋จ