3๏ธโฃ Swift/Swift ์ ๋ฆฌ20 [Swift] ARC (2); ๋ฉ๋ชจ๋ฆฌ ๋์, Retain Cycle ์ ๋ฒ ๊ธ์์๋ ARC์ ๊ฐ๋ ์ ๋ํด ์์๋ดค๋๋ฐ, ์ค๋์ ARC๊ฐ ์ ๋๋ก ์๋ํ ์ ์๊ฒ ๋๋ ์ด์ ์ ๋ํด์ ๊ณต๋ถํ๊ณ ๊ทธ๋ก ์ธํด ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ๋ฐ์ํ ์ ์๋ ์ํฉ์ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค. ๋ฉ๋ชจ๋ฆฌ ๋์๋ ํ๋ก๊ทธ๋จ์ด ํ์ํ์ง ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณ์ ์ ์ ํ๊ณ ์๋ ํ์์ด๋ค. iOS์ฑ์ ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ์์ด๊ฒ๋๋ฉด ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ์ฆ๊ฐํ๊ณ , ๊ฒฐ๊ตญ์ ์ฑ์ ์ฃฝ์ผ ์ ์๋ค. ์ฐ์ ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ๋ฐ์ํ ์ ์๋ ์์ธ์ ๋ํด ์ดํด๋ณด์. ๐ ๋ฉ๋ชจ๋ฆฌ ๋์ ๋ฐ์ ์์ธ - Retain Cycle (๊ฐํ์ฐธ์กฐ ์ํ) ์ ๋ฒ ๊ธ์์ ๋งํ๋ฏ swift์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ ARC๊ฐ ์๋์ผ๋ก ์ํํด์ฃผ๊ณ , ARC๋ ์ฐธ์กฐ ์นด์ดํธ๋ฅผ ํตํด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ ํ ๋์ ํด์ ์์ผ์ค๋ค. ์ฐธ์กฐ์ ์ข ๋ฅ๋ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์๋๋ฐ, ์ฐ๋ฆฌ๊ฐ ํด๋์ค ํ์ ์ ํ๋กํผํฐ๋ ๋ณ์, ์์ ๋ฑ์ ์ ์ธ.. 2021. 10. 4. [Swift] ARC (1); ARC์ ๊ฐ๋ , Retain Count ์ค๋์ ARC์ ๋ํด ๊ธ์ ์์ฑํด๋ณด๋ คํ๋ค. iOS ๊ณต๋ถ๋ฅผ ํ๋ฉด์ ๋ค์ด๋ณด๊ธฐ๋ ๋ง์ด ๋ค์ด๋ดค๋๋ฐ,, ์ด์ ์์ผ ๊ณต๋ถ๋ฅผ ํ๋๊ท๋ ๐ ARC (Auto Reference Counting) ์ด๋ฐ ๊ฐ๋ ์ฉ์ด๋ค์ ์ธ์ ๋ ๊ทธ๋ ๋ฏ ์ด๋ฆ์ ๋ชจ๋ ๊ฒ์ด,,! ๋ง ๊ทธ๋๋ก '์๋ ์ฐธ์กฐ ์นด์ดํ '์ด๋ค. ํ ๋จ์ด์ฉ ๋ณด๋ฉด, ์ฐ์ ์ฐธ์กฐ๋ฅผ ์นด์ดํ ํ๋ ์ด์ ๋ ๋ญ๊น? ๐ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ํจ์ผ๋ฏ ๊ทธ๋ผ ๊ทธ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์๋์ผ๋ก ํ๋ค? ๐ ํธ๋ฆฌํ๊ฒ, ์ค๋ฅ๋ฅผ ์ ๊ฒ! ํ๊ธฐ ์ํจ์ผ๋ฏ ์ด๋ ๊ฒ ์ด๋ฆ์์ ์ ์ ์๋ฏ ARC๋ ํจ๊ณผ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ํ ์ ์๊ฒ ํด์ฃผ๋ ๋๊ตฌ์ด๋ค. + ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ํํ๋ ์ด์ ๋ ๋ฌด์์ผ๊น? ์ฑ์ ์ฑ๋ฅ์ ์ ์งํ๊ธฐ ์ํด์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๊ฐ ๊ธฐ๋ณธ์ธ๋ฐ, ๋ฉ๋ชจ๋ฆฌ๋ผ๊ณ ํ๋ฉด ํฌ๊ฒ ์คํ ์์ญ, ํ ์์ญ ๋ฑ์ด ์๋ค. ์ด ์ค ์คํ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋.. 2021. 9. 23. [Swift] ํ๋กํผํฐ ๊ฐ๋ ์ ๋ฆฌ (3); ํ์ ํ๋กํผํฐ ์ด์ ํ๋กํผํฐ ๋ง์ง๋ง ์ข ๋ฅ์ธ ํ์ ํ๋กํผํฐ์ ๋ํด ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค. ์ด๋ป๊ฒ ๋ณด๋ฉด ์ ์ฅ ํ๋กํผํฐ, ์ฐ์ฐ ํ๋กํผํฐ์ ํฌํจ๋๋ ๋ด์ฉ์ผ๋ก ๋ณผ ์๋ ์๊ฒ ๋ค. ๐ ํ์ ํ๋กํผํฐ (Type Properties) ํ์ ํ๋กํผํฐ๋ ์์ ๊ณต๋ถํ๋ ์ ์ฅ ํ๋กํผํฐ, ์ฐ์ฐ ํ๋กํผํฐ์ static๋ง ๋ถ์ด๋ฉด ๋! ์ง๊ธ๊น์ง ๊ณต๋ถํ ํ๋กํผํฐ๋ค์ ํ์ ์ ์ ์ํ๊ณ , ํด๋น ์ธ์คํด์ค๊ฐ ์์ฑ๋์์ ๋ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ธ์คํด์ค๋ง๋ค ๋ค๋ฅธ ๊ฐ์ ๊ฐ์ง ์ ์์๋ค. ์ผ์ข ์ ์ง์ญ๋ณ์๊ฐ์ ๊ฐ๋ .๐ฅ ํ์ง๋ง ์ด ํ์ ํ๋กํผํฐ๋ ๊ฐ๊ฐ์ ์ธ์คํด์ค๊ฐ ์๋ ํ์ ์์ฒด์! ์ํ๋ ํ๋กํผํฐ์ด๋ค. ์ธ์คํด์ค์ ์์ฑ ์ฌ๋ถ์ ๊ด๊ณ ์์ด ํ์ ํ๋กํผํฐ์ ๊ฐ์ ๋ฑ ํ๋๋ฟ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ํ๋๋ฟ์ธ ๊ฐ์ ๊ทธ ํ์ ์ ๋ชจ๋ ์ธ์คํด์ค๊ฐ ๊ณตํต์ผ๋ก ์ฌ์ฉํ๋ ๊ฐ์ด๋ ๋ชจ๋ ์ธ์คํด์ค์์.. 2021. 9. 22. [Swift] ํ๋กํผํฐ ๊ฐ๋ ์ ๋ฆฌ (2); ์ฐ์ฐ ํ๋กํผํฐ ์ ๋ฒ ์ ์ฅ ํ๋กํผํฐ ํฌ์คํ ์ ์ด์ด์ ์ค๋์ ์ฐ์ฐ ํ๋กํผํฐ์ ๋ํด ์ ๋ฆฌํ๋ ค๊ณ ํ๋ค,, ์ ์ฅ ํ๋กํผํฐ๋ ๋ณ์, ์์์ ๋ํ ๊ฐ๋ ์ผ๋ก ๊ทธ๋๋ง ์ฌ์ด? ํธ์ด์๋๋ฐ ์ฐ์ฐ ํ๋กํผํฐ๋ ๋น๊ต์ ์ด๋ ค์ ๋น. ๊ฐ์ด ๊ณต๋ถํด๋ณด์.. ๐ ์ฐ์ฐ ํ๋กํผํฐ (Computed Properties) ๊ฐ์ ์ ์ฅํ๋ ์ ์ฅ ํ๋กํผํฐ์ ๋ฌ๋ฆฌ ์ฐ์ฐ ํ๋กํผํฐ๋ ๊ฐ์ ์ ์ฅํ๋ ๊ณต๊ฐ์ด ์๋ค. ๋ฐ๋ผ์ ๋ค๋ฅธ ์ ์ฅ ํ๋กํผํฐ๋ฅผ ๊ฐ์ ธ์์ ์ฐ์ฐ์ ํ๊ณ ์ ์ ํ ๊ฐ์ ๋๋ ค์ฃผ๋ ์ญํ ์ ํ๋ค. ๊ตฌ์กฐ์ฒด, ํด๋์ค, ์ด๊ฑฐํ ๋ชจ๋์์ ์ฌ์ฉ ๊ฐ๋ฅํ๊ณ ์ ๊ทผ์(getter), ์ค์ ์(setter)๊ฐ ํ์ํ๋ค. ์ด๋ ํ ๊ฐ์ ๊ฐ์ง๊ณ ์ฐ์ฐ, ๋ฐํํ๋ค๋ ๋ถ๋ถ์์ ๋ฉ์๋์ ๋น์ทํ๋ค๋ ๊ฒ์ ์ ์ ์๋๋ฐ ๋ฉ์๋ ๋์ ์ด ์ฐ์ฐ ํ๋กํผํฐ๋ฅผ ์ฌ์ฉํ๋ ์ ์ ์์๋ณด๋ฉด, 1) ๋ฉ์๋์ ๊ฒฝ์ฐ ์์์ ๋งํ .. 2021. 9. 22. [Swift] ํ๋กํผํฐ ๊ฐ๋ ์ ๋ฆฌ (1); ์ ์ฅ ํ๋กํผํฐ ํ๋กํผํฐ๋ผ๊ณ ํ๋ฉด ํด๋์ค๋ ๊ตฌ์กฐ์ฒด์์ ์ฐ๋ ๋ณ์, ์์,,? ๊ธฐ๋ณธ์ ์ธ ๊ฐ๋ ์ด์ง๋ง ์ ํํ ์ค๋ช ํ๊ธฐ ์ด๋ ต๋ค.ใ ์ถ์์ ๋ง์ ์ด๋ฐ ๊ฐ๋ ๋ค์ ํํํํ๊ณ ๋์ด๊ฐ๋ คํ๋ค.๐ฉ๐ป๐ป ํ๋กํผํฐ๋ ํด๋์ค, ๊ตฌ์กฐ์ฒด, ์ด๊ฑฐํ ๋ฑ์ ๊ด๋ จ๋ ๊ฐ์ ๋ปํ๊ณ , ๊ทธ ์ข ๋ฅ๋ ์ ์ฅ ํ๋กํผํฐ, ์ฐ์ฐ ํ๋กํผํฐ, ํ์ ํ๋กํผํฐ๋ก ํฌ๊ฒ ๋๋ ์ ์๋ค. ๐ ์ ์ฅ ํ๋กํผํฐ (Stored Properties) ์ ์ฅ ํ๋กํผํฐ๋ ํด๋์ค๋ ๊ตฌ์กฐ์ฒด์์ ๋ณ์๋ ์์๋ฅผ ์ ์ฅํ๋ ๊ฐ์ฅ ๋จ์ํ ํ๋กํผํฐ์ด๋ค. ๐ ์ ์ฅ ํ๋กํผํฐ์ ๊ธฐ๋ณธ ํํ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ํํ์ ์ ์ฅ ํ๋กํผํฐ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ์ฝ๋๋ก ์์ฑํ๋ค. struct Info1_sp { let name: String = "์คํฌ" // ์์ ์ ์ฅ ํ๋กํผํฐ var age: Int = 0 // ๋ณ์ ์ ์ฅ ํ๋กํผํฐ } clas.. 2021. 9. 22. ์ด์ 1 2 3 4 ๋ค์