[Swift] fileprivate, private

김상은·2022년 8월 31일
2

Swift

목록 보기
1/1
fileprivate let loginButton = UIButton().then {}

위 코드는 제가 프로젝트를 하면서 로그인 버튼을 만들때 쓴 코드 입니다.
저 코드에서 접근제어자는 fileprivate인데.. 습관적으로 적어서인지.. 정확히 private와 fileprivate의 차이를 알지 못하여서 공부해 보았습니다.

Swift에서의 접근 레벨(Access Levels)

Swift에서는 5개의 접근레벨을 제공하는데요

  • Open & Public : Open과 Public 모두 선언한 모듈이 아닌 다른 모듈에서 사용할 수 있습니다. 이 둘의 차이점은 Open다른 모듈에서 오버라이딩과 서브클래싱이 가능하지만 Public은 불가능 합니다.
  • Internal : 아무 접근레벨도 설정하지 않으면 Internal로 간주됩니다. 해당 모듈 전체에서 사용가능합니다.
  • Fileprivate : 특정 엔티티를 선언한 클래스에서만 사용이 가능합니다.
  • Private : 특정 엔티티가 선언된 괄호{}안에서만 사용이 가능합니다.

음.... 이해가 잘 되지 않는데 글만 잘 읽어 본다면
Open > Public > Internal > Fileprivate > Private
순으로 개방(?)적인 것을 알 수 있습니다ㅏ

여기서 저희가 자세히 볼 것은 FileprivatePrivate이죠


Fileprivate와 Private

이제 정말 다왔는데
위 말이 너무 어렵죠...조금 쉬운 말로 한번 바꾼다면 어떻게 할 수 있을까요..?

일단 "Fileprivate는 같은 파일 안에서만 사용가능하다!" 라고 하면 조금 쉽죠
그럼 "Private는 같은 코드블럭 안에서만 사용가능하다!" 라고 생각하면 될거 같네요...

마무리...

오늘은 이렇게 FileprivatePrivate의 차이점을 살펴봤는데...
이해가 쉽게 되지는 않네요... 나중에 꼭 몇번 더 봐야겠습니다..

개인적으로 생각을 정리하며 쓴 글이다보니 실수가 많을거 같은데 글을 읽다가 아 이건 틀렸는데? 싶은 것이 있다면 댓글로 꼭 알려주시면 감사하겠습니다!



참고
Swift Language Guide,
[Swift] AccessControl (Bill Kim's Life),
Swift) AccessControl (Zedd0202)

profile
🐢 기초부터 천천히 하고픈 고등학생 개발자 🐢

1개의 댓글

comment-user-thumbnail
2022년 9월 5일

너무 유익하고 좋아용 자주 읽을게용!!

답글 달기