접근 제어자는 코드의 특정 부분을 외부에서 접근 가능하게 하거나, 특정 모듈이나 파일 내에서만 사용할 수 있도록 제어하는 역할을 한다. 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 thevarorsubscriptintroducer.
많은 객체지향 언어(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 제한 가능 여부 |
|
|
|
|
|
|
|
|
|
|
| 불가능 |