스위프트에서의 접근제어를 공부해보자:)
dqQQQ
·2023. 11. 29. 13:58
개요
스위프트에서 은닉화를 담당하는 접근제어 Access Control에 대해 알아보겠다.
접근제어
코드끼리 상호작용을 할 때 파일 간 또는 모듈 간에 접근을 제한할 수 있는 기능이다.
캡슐화와 은닉화를 구현할 수 있다.
접근수준
접근수준 | 키워드 | 접근도 | 범위 |
---|---|---|---|
개방 | open | 매우 높음 | 모듈외부까지 |
공개 | public | 높음 | 모듈외부까지 |
내부 | internal | 중간 | 모듈내부 |
파일외부비공개 | fileprivate | 낮음 | 파일내부 |
비공개 | private | 매우낮음 | 기능정의내부 |
open
클래스에서만 사용할 수 있다. 기본적으로 public과 비슷하다. 클래스를 open으로 명시하는 것은 다른 곳에서도 부모클래스로 사용하겠다는 목적이다.
public
어디서든 접근가능하다. 주로 프레임워크에서 외부와 연결될 인터페이스를 구현할 때 많이 사용한다.
internal
기본적으로 모든 요소에 암묵적으로 지정하는 기본 접근 수준이다.
소스파일이 속해있는 모듈 어디서든 사용할 수 있지만 외부 모듈에서는 불가능하다.
보통 외부에서 사용할 클래스나 구조체가 아니며, 모듈 내부에서만 사용할 때 지정한다.
fileprivate
fileprivate으로 선언된 곳의 파일에서만 사용할 수 있다. 소스파일 외부에서 값이 변경되면 위험할 경우 사용한다.
private
기능을 정의한 곳에서만 사용할 수 있다.
읽기 전용 구현
구조체 또는 클래스를 사용하여 저장 프로퍼티를 구현할 때는 허용된 접근 수준에서 접근할 수 있다.
값을 변경할 수 없고 읽기만 가능하게 하고 싶다면 어떻게 할까?
Setter만 더 낮은 접근 수준을 갖도록 제한할 수 있다. 접근수준(set)
을 사용하면 set만 제한한다.
'Swift' 카테고리의 다른 글
스위프트에서의 프로토콜을 공부해보자:) (0) | 2023.11.29 |
---|---|
스위프트에서의 클로저를 공부해보자:) (0) | 2023.11.29 |
스위프트에서의 인스턴스의 생성과 소멸을 공부해보자:) (0) | 2023.11.28 |
스위프트의 코딩 스타일에 대해서 공부해보자:) (0) | 2023.11.28 |
스위프트의 불명확 타입에 대해서 공부해보자:) (0) | 2023.11.28 |