- ๋ณธ์ธ์ด ๊ฐ์ถ๊ณ ์ถ์ ์ฝ๋๋ฅผ ๊ฐ์ถ ์ ์๋ค.
- ์ฝ๋์ ์์ญ์ ๋ถ๋ฆฌ์์ผ์, ํจ์จ์ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
- ์ปดํ์ผ ์๊ฐ์ด ์ค์ด๋ ๋ค. โ (์ปดํ์ผ๋ฌ๊ฐ ํด๋น ๋ณ์์ ์ด๋๋ฒ์์์๋ง ์ฐ์ด๋์ง ์ธ์ง๊ฐ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์)
open: ๋ค๋ฅธ ๋ชจ๋์์๋ ์ ๊ทผ ๊ฐ๋ฅ / ์์ ๋ฐ ์ฌ์ ์๋ ๊ฐ๋ฅpublic: ๋ค๋ฅธ ๋ชจ๋์์๋ ์ ๊ทผ ๊ฐ๋ฅ / ์์ ๋ฐ ์ฌ์ ์ ๋ถ๊ฐinternal: ๊ฐ์ ๋ชจ๋ ๋ด์์๋ง ์ ๊ทผ ๊ฐ๋ฅ(default)fileprivate: ๊ฐ์ ํ์ผ ๋ด์์๋ง ์ ๊ทผ ๊ฐ๋ฅprivate: ๊ฐ์ scope๋ด์์๋ง ์ ๊ทผ ๊ฐ๋ฅ
- ํ์ ์ ํ์ ์ ์ฌ์ฉํ๋ ๋ณ์๋, ํจ์๋ณด๋ค ๋์ ์์ค์ผ๋ก ์ ๊ทผ์ ์ด๊ฐ ์ ์ธ๋์ด์ผ ํ๋ค.
// String ํ์
์ public ์ด๋ฏ๋ก open var some ๋ถ๊ฐ
internal var some: String = "์ ๊ทผ๊ฐ๋ฅ"
internal func sFunc(a: Int) -> Bool {
print(a)
print("hello")
return true
}- ํ์ ์ ์ ๊ทผ ์์ค์ด ๋๋ค๊ณ ๋ด๋ถ ๋ฉค๋ฒ์ ์ ๊ทผ ์์ค์ด ๋ฌด์กฐ๊ฑด ๋์์ง๋๊ฑด์๋๋ค.
open class SomeClass {
var some = "internal"
}์ ์ฒ๋ผ ๋ด๋ถ ๋ฉค๋ฒ๊ฐ ๋ช
์์ ์ธ ์ ์ธ์ ํ์ง ์๋๋ค๋ฉด, internal๋ก ์ ์งํ๋ค.
_๊ฐ ๋ถ์ด์๋ ํจํด
class SomeOtherClass {
private var _name = "์ด๋ฆ" // ์ฐ๊ธฐ - private
var name: String {
return _name // ์ฝ๊ธฐ -internal
}
func changeName(name: String) {
self._name = name
}
}
// Swift์์ ์ ๊ณตํ๋ ๋ฌธ๋ฒ
class SomeAnotherClass {
private(set) var name = "์ด๋ฆ" // ์ฝ๊ธฐ - internal / ์ฐ๊ธฐ - private
}- ์์ํด์ ๋ง๋ ์๋ธํด๋์ค๋ ์์ํด๋์ค๋ณด๋ค ๋ ๋์ ์ ๊ทผ ์์ค์ ๊ฐ์ง ์ ์๋ค.
public class A {
fileprivate func someMethod() {}
}
internal calss B: A {
override internal func somemethod() {
super.someMethod()
}
}- ํ์ฅ์์๋ ๋ณธ์ฒด์ ๋์ผํ ์ ๊ทผ ์์ค์ ์ ์งํ๊ณ , ๋ณธ์ฒด์ ๋ฉค๋ฒ์๋ ๊ธฐ๋ณธ์ ์ธ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
public class SomeClass {
private var somPrivateProperty = "somePrivate"
}
extension SomeClass {
func somePrivateControlFunction() {
somePrivateProperty = "์ ๊ทผ๊ฐ๋ฅ"
}
}