외부에서 특정 코드에 접근하지 못하게 만들기 위해 사용하는 문법이다.
private 키워드를 사용해 속성과 메서드에 적용가능하다.
접근 제어를 사용했을때의 장점
class SomeMac {
private var model = "맥"
func modelChange(model: String) {
self.model = model
}
}
위와 같이 private 키워드를 사용할 경우 model 변수에 직접 접근할 수 있는 방법이 사라진다.
var class = SomeMac()
// 접근 불가능
class.model = "맥북"
// modelChange 함수를 통해 model 변수에접근 가능
class.modelChange("맥북")
싱글톤 패턴을 사용해야 할 때
class Singleton {
// 타입 프로퍼티(전역변수)로 사용
// 자신의 객체를 생성해서 전역변수에 할당
static let shared = Singleton()
var userInfoId = 12345
private init() { }
}
타입 프로퍼티를 사용하면 인스턴스를 생성하지 않을때 전역에서 해당 프로퍼티의 값에 접근 가능하다. 그러나 새로운 객체 생성을 하게 되면 고유 프로퍼티가 되지 못한다. 이 때 사용하는 방법이
private init() { }
을 사용하는 것이다. private 접근 제한자를 사용하게 되면 생성자의 외부접근이 불가능해지기 때문에, 인스턴스 생성이 불가능하게 된다.