TIL (Today I Learned) 240116

Danny·2024년 1월 17일

TIL(Today I Learned)

목록 보기
14/34

1월 16일 (화)

🔥학습 내용

접근제어(Access Control)

  • 코드끼리 상호작용을 할 때 파일 간 또는 모듈 간에 접근을 제한할 수 있는 기능이다.
  • 코드의 상세 구현은 숨기고 허용된 기능만 사용하는 인터페이스를 제공할 수 있다.

#. 파일: 하나의 스위프트 소스 코드 파일
#. 모듈: 배포할 코드의 묶음 단위

1. 접근제어가 왜 필요한 가? 🤔

  • 접근제어가 필요한 이유는 "객체지향 프로그래밍 패러다임"과 연관이 있다고 볼 수 있다.
  • 캡슐화와 은닉화를 구현하는 이유는 외부에서 보거나 접근하면 안되는 코드가 있기 때문이다.
  • 불필요한 접근으로 의도치 않은 결과를 초래할 수 있기 때문에 캡슐화와 은닉화를 사용한다.

2. 접근수준(Access Level)

  • 각 타입(클래스, 구조체, 열거형 등), 타입 내부의 프로퍼티, 메서드, 이니셜라이저, 서브스크립트 각각에도 접근수준을 지정할 수 있다.
  • 종류는 open, public, internal, fileprivate, private 다섯가지가 있다.
open class SomeOpenClass {}
public class SomePublicClass {}
internal class SomeInternalClass {}
fileprivate class SomeFilePrivateClass {}
private class SomePrivateClass {}


open var someOpenVariable = 0
public var somePublicVariable = 0
internal let someInternalConstant = 0
fileprivate func someFilePrivateFunction() {}
private func somePrivateFunction() {}

1️⃣ public - 공개 접근수준

  • 주로 프레임워크에서 외부와 연결된 인터페이스를 구현할 때 많이 사용한다.

2️⃣ open - 개방 접근수준

  • 클래스를 open으로 명시하는 것은 해당 클래스를 다른 모듈에서도 부모클래스로 사용하겠다는 목적으로 클래스를 설계하고 코드를 작성했음을 의미한다.

3️⃣ internal - 내부 접근수준

  • 기본적으로 모든 요소에 암묵적으로 지정하는 기본 접근수준이다.
  • 소스파일이 속해 있는 모율 어디에서든 사용할 수 있다.

4️⃣ fileprivate - 파일외부비공개 접근수준

  • 구현된 소스파일 내부에서만 사용할 수 있다.

5️⃣ private - 비공개 접근수준

  • 가장 한정적인 범위의 접근수준이다.
  • private으로 지정된 요소는 그 기능을 정의하고 구현한 범위 내에서만 사용할 수 있다.
  • private으로 지정한 기능은 같은 소스파일 안에 구현한 다른 타입이나 기능에서도 사용할 수 없다.

#. 참고 URL

  1. The Swift Programming Language(5.9.2) - Access Control
profile
안녕하세요 iOS 개발자 지망생 Danny 입니다.

0개의 댓글