접근 제어자는 코드의 특정 부분을 외부에서 접근 가능하게 하거나, 특정 모듈이나 파일 내에서만 사용할 수 있도록 제어하는 역할을 한다. Swift에서는 기본적으로 6개의 접근 제어자와 (set)
키워드를 제공하고 있다.
기본 접근 제어자
접근 제어자 | 설명 | 접근 가능 범위 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(set)
을 활용한 접근 제한
You can give a setter a lower access level than its corresponding getter, to restrict the read-write scope of that variable, property, or subscript. You assign a lower access level by writing
fileprivate(set)
,private(set)
,internal(set)
, orpackage(set)
before thevar
orsubscript
introducer.
많은 객체지향 언어(Java, C#, Python 등)에서는 getter
와 setter
를 활용하여 변수의 접근을 제어하지만, Swift에서는 이러한 개념을 접근 제어자와 (set)
키워드를 통해 더 간결하게 표현할 수 있다.
예를 들어, Java에서는 변수를 private
으로 설정하면, getter를 제공해야 외부에서 값을 읽을 수 있지만
public class User {
private String name;
public User(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
Swift에서는 internal private(set)
을 이용하여 getter
는 internal
, setter
는 private
을 적용한 것처럼 사용할 수 있다.
struct User {
internal private(set) var name: String
init(name: String) {
self.name = name
}
}
다른 언어에서는 getter
/setter
를 사용하여 접근을 제한하는 경우가 많지만, Swift에서는 접근 제어자만으로 간결하게 제어할 수 있다.
참고로 setter
는 getter
보다 더 제한적일 수는 있지만, 더 넓을 수는 없다.
접근 제어자 | setter 제한 가능 여부 |
|
|
|
|
|
|
|
|
|
|
| 불가능 |