JB
Oct 25, 2020

--

[iOS Swift] 접근 권한 (Access Control — Open, Public, Internal, Fileprivate, Private )에 대해서

접근 권한 ( Access Control) 이란 코드 접근을 제한 하기 위해 사용합니다. 어떠한 함수나 메소드를 제한적으로 사용하고 구현단계를 숨기기 위해 사용합니다. 이에는

  • Open
  • Public
  • Internal
  • Fileprivate
  • Private

과 같은 종류가 있습니다.

이 글에서는 프로퍼티, 타입, 함수등과 같은 것들을 편의성을 위해 "엔티티(Entities)" 라고 칭하겠습니다.

Open과 Public

Open과 public은 어느 파일에서나 엔티티가 접근 가능합니다. 대게 public한 인터페이스나 프레임워크를 지정할 때 사용합니다.

Internal

Internal은 정의되어있는 모듈 안에서는 어느곳에서나 접근 가능하지만, 그 모듈 밖에서는 사용이 제한됩니다. 앱을 정의하거나 프레임워크의 내부적인 구조를 잡을 때 사용됩니다.

File-Private

File-private은 정의한 그 파일에서만 엔티티를 사용하게끔 제한합니다.

Private

Private은 엔티티를 그 선언 파일이나 익스텐션에서만 접근이 가능합니다.

가장 제한적이지 않은 접근 제어부터 제한적인 접근제어까지 나열을 해 본다면

(가장 제한적이지 않음)OpenPublicInternalFile-PrivatePrivate(가장 제한적)

Open은 가장 접근 제한이 제한되지 않는 (the least restrictive) 접근 레벨 입니다. Open을 사용하면 Open을 사용한 모듈을 서브클래싱하여 오버라이딩 할 수 있다는 점 입니다.

--

--

JB
JB

Written by JB

iOS engineer @kakaobank

No responses yet