Swift 공식문서 읽기...Day25

김민종·2021년 9월 13일
0

Swift Doc

목록 보기
25/26

Access Control

접근제어는 다른 모듈과 파일의 코드로 부터 접근을 제어한다. 코드의 상세구현을 숨기고 접근 하도록 인터페이스를 제공한다. 이때 접근수준을 개별적 타입에 할당 할 수 있다.

Modules and Source Files
스위프트의 접근 제어 모델은 모듈과 소스파일 개념이 기반이다.

Access Levels
스위프트에서는 5가지 수준의 접근을 제공한다.

open과 public 접근은 정의 모듈에서 모든 소스파일내에서 사용될 수 있다. 보통 프레임워크에 대한 퍼블릭 인터페이스를 지정할때 공용접근이 사용된다.

internal 접근은 앱이나 프레임워크의 내부 구조를 정의할 때 internal접근을 사용한다.

file-private는 자체정의 소스파일에 대한 엔티티 접근을 제한한다. 전체파일에서 사용될 때 특정기능의 구현 세부정보를 숨길 수 있다.

private는 단일 정의 내에서만 사용되는 특정 기능 조각의 구현 상세 내역을 숨길 수 있다.

Guiding Principle of Access Levels
스위프트에서 접근 수준은 전반적인 지도원칙을 따른다. public 변수는 internal과 private를 가지도록 정의하지 않는 다.
함수는 인자타입과 반환타입보다 높은 접근제어를 가지지 못한다.

Access Levels for Single-Target Apps
단일 타겟 앱을 만들 시에는 앱 내부에 모든 코드가 포함되어 앱 모듈 밖에서 사용하도록 만들 필요가 없다. 하지만 앱 모듈 내에서 다른 코드로 부터 구현을 숨기고 싶다면 private를 표시한다.

Custom Types
사용자 타입을 위한 명확한 접근수준을 원한다면 타입을 정의하는 시점에 해야한다. 새로운 타입은 접근 수준이 어디서나 사용가능해야 한다.

Subclassing
서브클래싱 시 서브클래스는 슈퍼클래스보다 더 높은 접근 수준을 가질 수 없다.그리고 특정 접근 맥락에서 볼 수 있는 모든 클래스 멤버를 오버라이드 할 수 있다.

Constants, Variables, Properties, and Subscripts
상수, 변수, 프로퍼티는 더 public되지 못한다. private 타입으로 public타입 속성을 작성하는 것은 유효하지 않다.

Getters and Setters
getter와 setter는 자동적으로 상수,변수 와 같은 접근 레벨을 갖는다.

Initializers
사용자 이니셜라이저는 타입초기화와 같은 수준의 접근레벨을 갖는다. 하지만 필수 이니셜라이저는 예외이다. 필수 이니셜라이저는 속성 클래스와 같은 접근 수준을 가져야 한다.

Protocols
프로토콜 타입에 명시적인 접근 수준을 할당하기 원한다면 프로토콜을 정의하는 시점에 해야한다.

profile
신입 ios개발자입니다!

0개의 댓글