에서 액세스 제어 스위프트 공식 문서에 따르면

“액세스 제어는 다른 소스 파일 및 모듈의 코드에서 코드의 일부에 대한 액세스를 제한합니다. 이 기능을 사용하면 코드의 구현 세부 정보를 숨기고 해당 코드에 액세스하고 사용할 수 있는 기본 인터페이스를 지정할 수 있습니다.”

스위프트 5 다섯 액세스 제어. 공개,공개,내부,파일 비공개 및 비공개입니다. 이러한 액세스 제어는 모듈 및 소스 파일의 용도에 따라 정의됩니다. 이 튜토리얼에서,우리는 무엇을 배울 것입니다,어디서,어떻게 스위프트에서 액세스 제어를 사용하는 방법.

열기(덜 제한적)

열기로 정의 된 모든 것은 모듈 내에서 또는 모듈없이 액세스 할 수 있습니다. 오픈 액세스 레벨 엔티티는 어디서나 액세스 할 수 있습니다. 즉,열린 변수가 액세스 할 수 있고,열린 함수가 재정의 할 수 있으며,열린 클래스는 해당 모듈을 가져 와서 모듈 내부 및 모듈 외부의 하위 클래스가 될 수 있습니다.이 클래스에는 다음과 같은 내용이 포함되어 있습니다. 모든 클래스를 서브클래스할 수 있습니다. 이 예제에서는 다음과 같이 설명합니다. 모든 클래스를 서브클래싱할 수 있습니다.

@available(iOS 2.0, *)open class UITableViewCell : UIView, NSCoding, UIGestureRecognizerDelegate { }

공개(공개보다 제한적)

공개 액세스와 마찬가지로 공공 기관도 모듈 내부 또는 외부에서 액세스 할 수 있습니다. 그러나 공개와 공개 사이에는 큰 차이가 있습니다.

공용 클래스를 서브클래스할 수 없으며 정의된 모듈 외부에서 공용 메서드를 재정의할 수 없습니다. 정의한 모듈 내에서 서브클래스 또는 재정의해야 합니다.

아래 예제를 확인하십시오

//module 1open class X{}
open func bar(){}public class Y{}
public func foo(){}//module 2class A: X{} // success
override func bar(){} // successclass B: Y{} //error
override func foo(){} // error

내부(모듈 수준 액세스 제어)

“내부”정의 된 모듈 내부의 모든 곳에서 엔터티를 사용할 수 있습니다. “내부”는 기본 액세스 수준입니다. 일반적으로 모듈은 단일 단위로 사용할 수있는 프레임 워크 또는 응용 프로그램입니다.

대상(모듈)내부 모든 엔터티는 기본적으로 내부(명시적으로 액세스 제어를 정의하지 않은 경우)입니다. 모듈 내부의 모든 것이 해당 모듈 내의 어느 곳에서나 누구나 액세스 할 수있는 방식으로 정의됩니다.

파일 개인(파일 수준 액세스 제어)

파일 개인 엔터티는 신속한 파일 내에서만 액세스할 수 있습니다. 스위프트 파일은 여러 클래스 또는 구조를 가질 수 있습니다. 스위프트 파일 내의 모든 파일 개인 엔티티는 해당 파일의 모든 클래스 또는 구조체에서 액세스 할 수 있습니다. 그것들이 없으면 그 파일 외부의 다른 클래스가 액세스 할 수 없습니다. 일반적으로 모듈의 다른 소스 파일에서 구현을 숨 깁니다.

//** ViewController.swift **//class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad() let a = A()
a.x()
a.z() //error let b = B()
b.Y() // error
}
}class A {fileprivate func x(){
print("Inside ViewController file")
}
}
//** SecondViewController.swift **//class B{fileprivate func Y(){
print("Outside ViewController file")
}
}extension A{
fileprivate func Z(){
print("Outside ViewController file, extension of A")
}
}

개인(클래스 수준 액세스 제어)

개인이 가장 많이 사용되고 가장 제한된 액세스 제어입니다. 개인 엔티티는 선언 된 클래스(확장 포함)내에서만 액세스 할 수 있습니다. 일반적으로 특정 클래스 외부의 내부 구현 또는 기능을 숨기는 데 사용됩니다.

// ** ViewController.swift **//class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
x()
let a = A()
a.Y() // error
}
}extension ViewController{
private func x(){
print("Inside x")
}
}class A {
private func Y(){
print("Inside Y")
}
}

스위프트 액세스 제어의 차이

이제 우리는 테이블 형식으로 다른 매개 변수를 기반으로 이러한 액세스 수정 자 사이의 차이를 볼 수 있습니다

이제 스위프트 프로그래밍 언어로 액세스 제어에 대한 아이디어를 얻은 것 같습니다. 당신은 스위프트 공식 문서에 대한 그들에 대한 간단한 토론을 찾을 수 있습니다.

이 문서가 유용 발견하면 공유하고 약간의 박수를주십시오
매체에 내 다른 기사를 확인하고 링크드 인에 저를 연결합니다.

읽어 주셔서 감사합니다&해피 코딩

답글 남기기

이메일 주소는 공개되지 않습니다.