์ ๊ทผ์ ์ด
์ ๊ทผ์ ์ด = ์๋ํ
์ ๊ทผ์ ์ด๋ฅผ ํตํด ์์ธ ๊ตฌํ์ ์จ๊ธฐ๊ณ ํ์ฉ๋ ๊ธฐ๋ฅ๋ง ์ฌ์ฉํ๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ค.
์ ๊ทผ์ ์ด์ ํ์์ฑ
์ธ๋ถ์์ ๋ณด๊ฑฐ๋ ์ ๊ทผํ๋ฉด ์๋๋ ์ฝ๋๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค.
์ ๊ทผ์์ค
public : ๊ณต๊ฐ ์ ๊ทผ์์ค
- ์ด๋์๋ ์ฐ์ผ ์ ์๋ค.
- ์ค์ํํธ์ ๊ธฐ๋ณธ ์์๋ ๋ชจ๋ ๊ณต๊ฐ ์ ๊ทผ์์ค์ผ๋ก ๋์ด์๋ค.
open : ๊ฐ๋ฐฉ ์ ๊ทผ์์ค
- ๊ณต๊ฐ ์ ๊ทผ์์ค ์ด์์ผ๋ก ๋์ ์ ๊ทผ ์์ค์ด๋ค.
- ํด๋์ค์ ํด๋์ค์ ๋ฉค๋ฒ์์๋ง ์ฌ์ฉํ ์ ์๋ค.
- ๊ณต๊ฐ ์ ๊ทผ์์ค๊ณผ ๊ฐ๋ฐฉ ์ ๊ทผ์์ค์ ์ฐจ์ด์
- ๊ฐ๋ฐฉ ์ ๊ทผ์์ค์ ์ ์ธํ ๋ค๋ฅธ ๋ชจ๋ ์ ๊ทผ ์์ค์ ํด๋์ค๋ ๊ทธ ํด๋์ค๊ฐ ์ ์๋ ๋ชจ๋ ์์์๋ง ์์ํ ์ ์๋ค.
- ๊ฐ๋ฐฉ ์ ๊ทผ์์ค์ ์ ์ธํ ๋ค๋ฅธ ๋ชจ๋ ์ ๊ทผ์์ค์ ํด๋์ค ๋ฉค๋ฒ๋ ํด๋น ๋ฉค๋ฒ๊ฐ ์ ์๋ ๋ชจ๋ ์์์๋ง ์ฌ์ ์ ํ ์ ์๋ค.
- ๊ฐ๋ฐฉ ์ ๊ทผ์์ค์ ํด๋์ค๋ ๊ทธ ํด๋์ค๊ฐ ์ ์๋ ๋ชจ๋ ๋ฐ์ ๋ค๋ฅธ ๋ชจ๋์์๋ ์์ํ ์ ์๋ค.
- ๊ฐ๋ฐฉ ์ ๊ทผ์์ค์ ํด๋์ค ๋ฉค๋ฒ๋ ํด๋น ๋ฉค๋ฒ๊ฐ ์ ์๋ ๋ชจ๋ ๋ฐ์ ๋ค๋ฅธ ๋ชจ๋์์๋ ์ฌ์ ์ ํ ์ ์๋ค.
internal : ๋ด๋ถ ์ ๊ทผ์์ค
- ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ์์์ ์๋ฌต์ ์ผ๋ก ์ง์ ํ๋ ๊ธฐ๋ณธ ์ ๊ทผ ์์ค ( ๊ตณ์ด ํ๊ธฐํด์ฃผ์ง ์์๋ ๋๋ค )
- ์์คํ์ผ์ด ์ํด ์๋ ๋ชจ๋ ์ด๋์์๋ ์ฐ์ผ ์ ์๋ค.
- ๋ค๋ง, ๊ทธ ๋ชจ๋์ ๊ฐ์ ธ๋ค ์ฐ๋ ์ธ๋ถ ๋ชจ๋์์๋ ์ ๊ทผํ ์ ์๋ค.
- ๋ณดํต ์ธ๋ถ์์ ์ฌ์ฉํ ํด๋์ค๋ ๊ตฌ์กฐ์ฒด๊ฐ ์๋๋ฉฐ, ๋ชจ๋ ๋ด๋ถ์์ ๊ด์ญ์ ์ผ๋ก ์ฌ์ฉํ ๊ฒฝ์ฐ ๋ด๋ถ ์ ๊ทผ ์์ค ์ง์
fileprivate : ํ์ผ์ธ๋ถ๋น๊ณต๊ฐ ์ ๊ทผ์์ค
- ๊ทธ ์์๊ฐ ๊ตฌํ๋ ์์คํ์ผ ๋ด๋ถ์์๋ง ์ฌ์ฉํ ์ ์๋ค.
- ํด๋น ์์คํ์ผ ์ธ๋ถ์์ ๊ฐ์ด ๋ณ๊ฒฝ๋๊ฑฐ๋ ํจ์๋ฅผ ํธ์ถํ๋ฉด ๋ถ์์ฉ์ด ์๊ธธ ์ ์๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ฉด ์ข๋ค.
private : ๋น๊ณต๊ฐ ์ ๊ทผ์์ค
- ๊ฐ์ฅ ํ์ ์ ์ธ ๋ฒ์์ด๋ค.
- ๊ธฐ๋ฅ์ ์ ์ํ๊ณ , ๊ตฌํํ ๋ฒ์๋ด์์๋ง ์ฌ์ฉํ ์ ์๋ค.
- ๊ฐ์ ์์คํ์ผ ์์ ๊ตฌํํ ๋ค๋ฅธ ํ์ ์ด๋ ๊ธฐ๋ฅ์์๋ ์ฌ์ฉํ ์ ์๋ค.
๐ private vs fileprivate
๊ฐ์ ํ์ผ ๋ด๋ถ์์ private ์ ๊ทผ์์ค๊ณผ fileprivate ์ ๊ทผ์์ค์ ์ฌ์ฉํ ๋ ๋ถ๋ช ํ ์ฐจ์ด๊ฐ ์๋ค.
fileprivate ์ ๊ทผ์์ค์ผ๋ก ์ง์ ํ ์์๋ ๊ฐ์ ํ์ผ ์ด๋ค ์ฝ๋์์๋ ์ ๊ทผํ ์ ์๋ค.
๋ฐ๋ฉด์ private ์ ๊ทผ์์ค์ผ๋ก ์ง์ ํ ์์๋ ๊ฐ์ ํ์ผ ๋ด๋ถ์ ๋ค๋ฅธ ํ์ ์ ์ฝ๋๊ฐ ์๋๋ผ๋ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ๋ค.
์ ๊ทผ์ ์ด ๊ตฌํ ์ฐธ๊ณ ์ฌํญ
๋ชจ๋ ์ ๊ทผ์์ค์ ๊ท์น : '์์ ์์๋ณด๋ค ํ์ ์์๊ฐ ๋ ๋์ ์ ๊ทผ์์ค์ ๊ฐ์ง ์ ์๋ค'
- ๋น๊ณต๊ฐ ์ ๊ทผ ์์ค์ผ๋ก ์ ์ํ ๊ตฌ์กฐ์ฒด ๋ด๋ถ์ ํ๋กํผํฐ๋ก ๋ด๋ถ์์ค์ด๋ ๊ณต๊ฐ์์ค์ ๊ฐ๋ ํ๋กํผํฐ๋ฅผ ์ ์ํ ์ ์๋ค.
- ํจ์์ ๋งค๊ฐ๋ณ์๋ก ํน์ ์ ๊ทผ์์ค์ด ๋ถ์ฌ๋ ํ์ ์ด ์ ๋ฌ๋๊ฑฐ๋ ๋ฐํ๋๋ค๋ฉด, ๊ทธ ํ์ ์ ์ ๊ทผ์์ค๋ณด๋ค ํจ์์ ์ ๊ทผ์์ค์ด ๋๊ฒ ์ค์ ๋ ์ ์๋ค.
private class AClass {
// ๊ณต๊ฐ ์ ๊ทผ์์ค์ ๋ถ์ฌํด๋ AClass์ด ์ ๊ทผ์์ค์ด ๋น๊ณต๊ฐ ์ ๊ทผ์์ค์ด๋ฏ๋ก
// ์ด ๋ฉ์๋์ ์ ๊ทผ์์ค๋ ๋น๊ณต๊ฐ ์ ๊ทผ์์ค์ผ๋ก ์ทจ๊ธ๋๋ค.
public func someMethod() { // ๋ถ๊ฐ๋ฅ !
// ...
}
}
์ฝ๊ธฐ ์ ์ฉ ๊ตฌํ
- ๊ตฌ์กฐ์ฒด ๋๋ ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฅ ํ๋กํผํฐ ๊ตฌํ์ ํ์ฉ๋ ์ ๊ทผ์์ค์์ ํ๋กํผํฐ ๊ฐ์ ๊ฐ์ ธ๊ฐ ์ ์๋ค.
- ๊ทธ๋ ๋ค๋ฉด ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋๋ก ๊ตฌํํ๊ณ ์ถ๋ค๋ฉด ?
- ์ค์ ์(setter)๋ง ๋ฎ์ ์ ๊ทผ์์ค์ ๊ฐ๋๋ก ์ ํํ ์ ์๋ค.
- ์์์ ์ ๊ทผ์์ค ํค์๋ ๋ค์ ์ ๊ทผ์์ค(set) ์ฒ๋ผ ํํํ๋ฉด ์ค์ ์์ ์ ๊ทผ์์ค๋ง ๋ ๋ฎ๋๋ก ์ง์ ํด์ค ์ ์๋ค.
public private(set) var publicGetOnlyStoredProperty: Int = 0
'๐ iOS > ๊ธฐ์ด๋ฌธ๋ฒ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift ๊ธฐ์ด] ์ต์ ๋ ์ฒด์ด๋๊ณผ ๋น ๋ฅธ ์ข ๋ฃ (2) | 2023.01.19 |
---|---|
[Swift ๊ธฐ์ด] ํด๋ก์ (0) | 2023.01.19 |
[Swift ๊ธฐ์ด] ์ธ์คํด์ค ์์ฑ ๋ฐ ์๋ฉธ (0) | 2023.01.15 |
[Swift ๊ธฐ์ด] ํ๋กํผํฐ์ ๋ฉ์๋ (0) | 2023.01.10 |
[Swift ๊ธฐ์ด] ๊ตฌ์กฐ์ฒด์ ํด๋์ค (0) | 2023.01.05 |