티스토리 뷰
Swift가 3이 나왔을때 접근 한정자가 조금 추가가 되어서 사용성에서 약간은 좋은점이 있었는데.
이것이 Swift4가 되면서 약간의 변경점이 생기게 되었습니다.
Swift3.
open (3에서 새로 추가됨)
가장 개방되어 있고 소속 모듈 또는 소속 모듈을 import 하는 모든 모듈에서 class와 class 멤버에 접근할 수 있으며 open class를 상속 받아 sub class를 생성하거나 메서드를 override 할 수 있다. 간단히 이야기하면 다른 언어의 public이랑 유사합니다.
요즘 라이브러리들은 다 이걸 사용하던데... 이유가 있죠?
public
open과 동일한 접근을 허용하지만 sub class 생성과 override에 제한이 있음.
소속 모듈내에서는 sub class 생성과 sub class 내에서의 override가 허용된다.
이 경우는 프레임워크를 제작하는데 유용하며, 프레임워크 내에서는 자유롭게 상속 받지만 외부에서는 상속을 받을 수 없기 때문에 확장을 제한할 수 있다.
* 한마디로 open과 public의 차이는 상속을 받을수 있는지와 아닌지의 차이점을 가집니다.
internal
접근 제한자를 적지 않으면 기본적으로 이것이 사용됩니다.
소속 모듈의 모든 소스 파일에서는 사용할 수 있지만 모듈 외부에서는 접근이 불가능합니다.
fileprivate (3에서 새로 추가됨)
파일 내부에서만 접근이 가능하도록 설정
private
파일 내부가 아니라 만약 class, struct, extension 등등의 하나의 테두리 {} 안에서만 사용이 가능합니다.
이외로 Objective-C 클래스와 메소드는 open 상태로 가져와서 사용하게 됨.
private(set)
외부에서 접근이 가능하나... set은 안된다! 다시 이야기하면 getter만 제공을 하여줌.
Swift4.
fileprivate = private ?
기존 코드에서 private로 사용하면 안되던 부분들이 그냥 파일 전체로 사용할 수 있도록 되었습니다.
뭔가 되게 싱겁기는 하지만...
이런 변화점들은 swift에서 이제는 그만하였으면 하네요.
'Mobile > iOS' 카테고리의 다른 글
Swift. inline function (0) | 2018.07.06 |
---|---|
iOS. Core Data 간략히 설명 (0) | 2018.06.30 |
cocoapods. Library 등록 하기 (0) | 2018.06.25 |
Swift. reflection. (0) | 2018.06.24 |
Swift. Custom ViewController Transition. Present (0) | 2018.06.24 |
- Total
- Today
- Yesterday
- git
- go
- windows10
- android
- rxswift
- ubuntu
- MySQL
- Spring
- Python
- php
- Gradle
- enum
- war
- tomcat
- docker
- centos8
- Codable
- Windows
- github
- ios
- cocoapods
- nodejs
- intellij
- Xcode
- Linux
- SWIFT
- golang
- Kotlin
- Java
- CentOS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |