iOS ๐/Swift
์ ๊ทผ์ ์ด, Access control
yongmin.Lee
2021. 12. 28. 18:48
Access Control, ์ ๊ทผ ์ ์ด
- ๋ค๋ฅธ ์์คํ์ผ ๋ฐ ๋ชจ๋์ ์ฝ๋์์, ์ฝ๋์ ์ผ๋ถ์ ๋ํ ์ก์ธ์ค(์ ๊ทผ)์ ์ ํ
- Swift ์ ๊ทผ ์ ์ด ๋ชจ๋ธ์ ๋ชจ๋ ๋ฐ ์์คํ์ผ์ ๊ฐ๋ ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ค.
- ์ ๊ทผ์ ์ด๋ฅผ ํตํด ๊ฐ์ฒด ์ธ๋ถ์์ ๊ฐ์ฒด๋ด์ ์๋ฃ๋ก์ ์ ๊ทผ์ ์ ํํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์์ ,์กฐ์ํ๋ ๋์์ ๋ด๋ถ์ ๋๊ณ ์ ๊ทผ(getter),์ค์ (setter)ํ๋ ๋ฉ์๋๋ก ๊ฒฐ๊ณผ๋ง ๋ฐ๋๋ก ํ๋ ๊ฐ์ฒด์ ์๋ํ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํด์ค๋ค
- ๋ชจ๋
- ์ฝ๋ ๋ฐฐํฌ(code distribution)์ ๋จ์ผ ์ ๋
- Xcode์ ๊ฐ ๋น๋ ๋์ ( ์ : ์ฑ ๋ฒ๋ค ๋๋ Framework )์ Swift์์ ๋ณ๋์ ๋ชจ๋๋ก ์ฒ๋ฆฌ
- ์์คํ์ผ
- ๋ชจ๋ ๋ด์ ๋จ์ผ Swift์์ค ์ฝ๋ ํ์ผ (์ฌ์ค์ ์ฑ ๋๋ Framework๋ด์ ๋จ์ผ ํ์ผ)
- ๋ชจ๋ ๋ด์ ๋จ์ผ Swift์์ค ์ฝ๋ ํ์ผ (์ฌ์ค์ ์ฑ ๋๋ Framework๋ด์ ๋จ์ผ ํ์ผ)
Access Levels, ์ ๊ทผ ๋ ๋ฒจ
- open(๊ฐ์ฅ ์ ํ ์ ์) -> public -> internal -> fileprivate -> private(๊ฐ์ฅ ์ ํ์ )์ผ๋ก ๊ฐ ์๋ก ๋ ์ ํ์
- open
- open ์ ๊ทผ์ ํด๋์ค ๋ฐ ํด๋์ค ๋ฉค๋ฒ์๋ง ์ ์ฉ
- ์ํฐํฐ๋ฅผ ์ ์ ๋ชจ๋์ ๋ชจ๋ ์์ค ํ์ผ ๋ด์์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์ ์ํ ๋ชจ๋์ ๊ฐ์ ธ์ค๋ ๋ค๋ฅธ ์ธ๋ถ ๋ชจ๋์ ์์คํ์ผ์์๋ ์ฌ์ฉํ ์ ์๋ค.
- ์ ์ ๋ ๋ชจ๋ ๋ด๋ถ ๋ฐ ๋ชจ๋์ ๊ฐ์ ธ์ค๋ ์ธ๋ถ ๋ชจ๋์์ ์๋ธ ํด๋์ฑ ๋๋ override ๋ ์ ์๋ค.
- public
- ๊ฐ๋ณ ํ์ (individual types)(ํด๋์ค, ๊ตฌ์กฐ์ฒด ๋ฐ ์ด๊ฑฐ) ๋ฟ๋ง์๋๋ผ, ํด๋น ํ์ ์ ์ํ๋ ํ๋กํผํฐ, ๋ฉ์๋, ์ด๋์ ๋ผ์ด์ ๋ฐ ์ฒจ์(subscripts)์ ๋ํด ํน์ ์ ๊ทผ ๋ ๋ฒจ์ ์ง์ ํ๋๋ฐ ์ ์ฉ๋๋ค
- ์ํฐํฐ๋ฅผ ์ ์ ๋ชจ๋์ ๋ชจ๋ ์์ค ํ์ผ ๋ด์์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์ ์ํ ๋ชจ๋์ ๊ฐ์ ธ์ค๋ ๋ค๋ฅธ ์ธ๋ถ ๋ชจ๋์ ์์คํ์ผ์์๋ ์ฌ์ฉํ ์ ์๋ค.
- ์ ์ ๋ ๋ชจ๋ ๋ด๋ถ์์๋ง ์๋ธ ํด๋์ฑ ๋๋ override ๋ ์ ์๋ค.
- internal
- ๊ฐ๋ณ ํ์ (individual types)(ํด๋์ค, ๊ตฌ์กฐ์ฒด ๋ฐ ์ด๊ฑฐ) ๋ฟ๋ง์๋๋ผ, ํด๋น ํ์ ์ ์ํ๋ ํ๋กํผํฐ, ๋ฉ์๋, ์ด๋์ ๋ผ์ด์ ๋ฐ ์ฒจ์(subscripts)์ ๋ํด ํน์ ์ ๊ทผ ๋ ๋ฒจ์ ์ง์ ํ๋๋ฐ ์ ์ฉ๋๋ค
- ์ ์ ๋ชจ๋์ ๋ชจ๋ ์์ค ํ์ผ ๋ด์์ ์ฌ์ฉ๋์ง๋ง, ํด๋น ๋ชจ๋ ์ธ๋ถ์ ์์คํ์ผ์์๋ ์ฌ์ฉ๋์ง ์๋๋ก ํ๋ค
- ๊ฐ์ ์ ์ ๋ชจ๋์ด๋ฉด ๋ค๋ฅธ ์์คํ์ผ์ด์ด๋ ์ ๊ทผ์ด ๊ฐ๋ฅ
- ๊ฐ์ ์ ์ ๋ชจ๋ ๋ด๋ถ์์๋ ์๋ธ ํด๋์ฑ ๋๋ override ๋ ์ ์๋ค.
- fileprivate
- ๊ฐ๋ณ ํ์ (individual types)(ํด๋์ค, ๊ตฌ์กฐ์ฒด ๋ฐ ์ด๊ฑฐ) ๋ฟ๋ง์๋๋ผ, ํด๋น ํ์ ์ ์ํ๋ ํ๋กํผํฐ, ๋ฉ์๋, ์ด๋์ ๋ผ์ด์ ๋ฐ ์ฒจ์(subscripts)์ ๋ํด ํน์ ์ ๊ทผ ๋ ๋ฒจ์ ์ง์ ํ๋๋ฐ ์ ์ฉ๋๋ค
- ๊ฐ์ ๋ชจ๋ ๋ด์์๋ ๊ฐ์ ์ ์ ์์คํ์ผ ์์์๋ง ์ฌ์ฉ์ด ๊ฐ๋ฅ
- ๊ฐ์ ์ ์ ๋ชจ๋์ด๋ฉด์ ๊ฐ์ ์์คํ์ผ์์๋ ์๋ธ ํด๋์ฑ ๋๋ override ๋ ์ ์๋ค.
- private
- ๊ฐ๋ณ ํ์ (individual types)(ํด๋์ค, ๊ตฌ์กฐ์ฒด ๋ฐ ์ด๊ฑฐ) ๋ฟ๋ง์๋๋ผ, ํด๋น ํ์ ์ ์ํ๋ ํ๋กํผํฐ, ๋ฉ์๋, ์ด๋์ ๋ผ์ด์ ๋ฐ ์ฒจ์(subscripts)์ ๋ํด ํน์ ์ ๊ทผ ๋ ๋ฒจ์ ์ง์ ํ๋๋ฐ ์ ์ฉ๋๋ค
- enclosing declaration ์ผ๋ก ์ ํ
- swift4 ์ถ๊ฐ์ฌํญ : ๋์ผํ ํ์ผ์ ์๋ ํด๋น ์ ์ธ์ extension์ผ๋ก ์ ํ
์ฐธ๊ณ