์๋ ํ์ธ์ Foma ์ ๋๋ค!
์ค๋ ์์๋ณผ ์ฃผ์ ๋ Delegate๋ retain์ด ๋ ๊น? ์ ๋๋ค.
์ด๋ฒ ์ฃผ์ ๋ ๋จผ์ ์ง๋ ์๊ฐ์ ๋ค๋ค์๋ Delegate์ Protocol ๊ทธ๋ฆฌ๊ณ Retain Cycle์ด๋? ์ ๋ณด๊ณ ์ค์๋ฉด ์ข์ ๊ฑฐ ๊ฐ์์!
๊ทธ๋ผ ๋ฐ๋ก ์์ํด๋ณผ๊ฒ์~
Class-Ony-Protocol
๋จผ์ Retain์ ์ ๋ฒ ์๊ฐ์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด๋์๋ ์ฆ ์ธ์คํดํ๋ฅผ ์์ผ์ค๋ ์๊ธด๋ค๊ณ ํ์ต๋๋ค.
์ธ์คํด์ค๋ ํด๋์ค๋ก๋ถํฐ ์์ฑ๋ ๊ฐ์ฒด๋ผ๊ณ ํ ์ ์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด Delegate๋ Protocol์ ์ฑํํ๋ ๊ฒ์ด๊ณ Protocol์ Class๊ฐ ์๋๋๊น Retain์ด ๋์ง ์๋๊ฑฐ๊ฒ ์ง
๋ผ๊ณ ์๊ฐํ์์ต๋๋ค.
ํ์ง๋ง ํด๋์ค์์ ํ๋กํ ์ฝ์ ์ฑํํ ๋๋ Class - Only - Protocol ์ด๋ผ๋ ํด๋์ค ์ ์ฉ ํ๋กํ ์ฝ์ ์ฌ์ฉํด์ผํฉ๋๋ค.
์ด๊ฒ์ ์ด๋ฆ ๊ทธ๋๋ก ํด๋์ค ์ ์ฉ ํ๋กํ ์ฝ์ด๋ผ์ ํ๋กํ ์ฝ์ class๋ฅผ ์ฑํํด์ฃผ์ด์ผ ํ๋๋ฐ์.
์ด๋ ๊ฒ ๋๋ฉด ํ๋กํ ์ฝ์ด classํ์ ์ผ๋ก ๋ฐ๋๊ฒ ๋๋ ๊ฒ์ด์ฃ .
์ ์ง๋ฌธ์ ๋ํ ๋ต์ด ๋์จ ๊ฒ ๊ฐ์๋ฐ์.
"Delegate๋ Class์์ ์ฑํํ๋ ค๋ฉด Class Only Protocol ์ด๋ผ๋ ํ๋กํ ์ฝ๋ก ๋ง๋ค์ด์ฃผ์ด์ผ ํ๊ณ
์ด๊ฒ์ classํ์ ์ผ๋ก ๋ง๋ค์ด์ง๋ฏ๋ก Retain์ด ๋๋ค!! ๋ผ๊ณ ํ ์ ์์ต๋๋ค."
Example: weak delegate
delegateํจํด์ ์ฌ์ฉํ์ค๋ weak์ผ๋ก ์ ์ธ๋ ๊ฒ์ ์์ฃผ ๋ณด์ จ์ ๊ฑฐ์์.
์์ ์ค๋ช ์ ๋ณด๋ฉด ์ด์ ์ delegate๊ฐ weak์ผ๋ก ์ ์ธ๋๋์ง ์ดํด๊ฐ ๋์ จ๋์?
weak๋ก ์ ์ธํด์ฃผ๋ ๊ฒ์ delegate๊ฐ retain์ด ๋๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ๋ง๊ธฐ ์ํด์์ ๋๋ค.
์ดํด๊ฐ ์์๋์๋ ๋ถ๋ค์ ์ํด์ ๊ทธ๋ฆผ์ผ๋ก ์ค๋ช ๋๋ฆด๊ฒ์!
๋๋ฆฌ๊ฒ์ดํธ ํจํด์ ์ฌ์ฉํ ๋์ ์์ ์ ๋๋ค.
์ฌ๊ธฐ์ SomeViewController์ granVC๋ฅผ ๊ฐ์ฒด๋ก ๋ง๋ค์ด์ฃผ๋ฉด ์ด๋ค์ผ์ด ์ผ์ด๋ ๊น์?
FomaViewController์ delegate๋ GranViewController๋ฅผ ์ฐธ์กฐํ๊ณ
GranViewController์ fomaVC๋ FomaViewController๋ฅผ ์ฐธ์กฐํ๊ฒ ๋ฉ๋๋ค.
์ฌ๊ธฐ์ SomeViewController๋ผ๋ ๊ณณ์์ granVC๋ฅผ ๊ฐ์ฒด๋ก ๋ง๋ค์ด์ฃผ๊ฒ ๋๋ฉด ์๋์ ๊ฐ์ ๊ทธ๋ฆผ์ฒ๋ผ ๋๊ฒ ์ฃ .
๋ง์ฝ delegate๋ฅผ weak์ผ๋ก ์ ์ธํ์ง ์์๋ค๊ณ ๊ฐ์ ํ๊ณ ์๋์ ๊ฐ์ด granVC๊ฐ nil์ด ๋์์ ๋์ ๊ฒฝ์ฐ
์๋์ ๊ฐ์ด Strong์ผ๋ก ์ ์ธ๋์ด ๊ฐ์ฒด์ ์ฐ๊ฒฐ์ ์์ํ ๋จ์๋ฒ๋ฆฌ๊ฒ ๋๊ณ ๊ฒฐ๊ตญ ๋ฉ๋ชจ๋ฆฌ๋์๊ฐ ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค!!
๊ณ ๋ก ๋ฐ๋์ delegate๋ฅผ weak์ผ๋ก ์ ์ธํด์ฃผ์ด์ ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ๋ฐ์ํ์ง ์๊ฒ ํด์ฃผ์ด์ผ ํฉ๋๋ค.
์ค๋์ ์ด๋ ๊ฒ Delegate๊ฐ retain์ด ๋๋์ง์ ๋ํด์ ์์๋ณด์๋๋ฐ์.
ํน์๋ผ๋ ํ๋ฆฐ ๋ถ๋ถ์ด ์๊ฑฐ๋ ๋ ๊ถ๊ธํ์ ์ ์์ผ์๋ฉด ๋๊ธ๋ก ์๋ ค์ฃผ์ธ์!!
'๐ iOS > iOS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[iOS ๋ฉด์ ์ง๋ฌธ] KVO๋? (0) | 2020.12.29 |
---|---|
[Library] ReactiveX์ ๋ํด ๊ฐ๋จํ๊ฒ ์์๋ณด๊ธฐ (0) | 2020.12.24 |
[iOS ๋ฉด์ ์ง๋ฌธ] GCD๋? - ๊ฐ๋ (0) | 2020.12.18 |
[iOS/UI] UITableView๋? (0) | 2020.12.16 |
[iOS ๋ฉด์ ์ง๋ฌธ] ์ ๋ค๋ฆญ์ด๋? (Swift Generic) (0) | 2020.12.15 |
๋๊ธ