ifølge swift offisiell dokumentasjon

» Tilgangskontroll begrenser tilgang til deler av koden din fra kode i andre kildefiler og moduler. Med denne funksjonen kan du skjule implementeringsdetaljene for koden din, og angi et foretrukket grensesnitt der koden kan nås og brukes.»

Swift 5 har fem tilgangskontroll. De er åpne, offentlige, interne, fileprivate og private. Disse tilgangskontrollene er definert basert på bruken i modulen og kildefilen. I denne opplæringen lærer vi hva, hvor og hvordan du bruker tilgangskontroll i swift.

åpen (mindre restriktiv)

alt definerer med åpen kan nås innenfor eller uten modulen. open access nivå enheter kan nås fra hvor som helst. Det betyr at en åpen variabel kan få tilgang til, en åpen funksjon kan overstyre og åpen klasse kan være underklasse inne i en modul og utenfor en modul ved å importere den modulen.

et eksempel er» UITableViewCell » – klassen I uikit-rammen. Vi kan underklasse noen klasse som En UITableViewCell klasse ved å importere uikit modulen. Hvis du ser definisjonen av «UITableViewCell», vil du se åpen tilgangskontroll før klassedefinisjonen inne I uikit-modulen. Det er derfor vi kan subclassing noen klasse som En UITableViewCell klasse ved å importere UIKit.

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

offentlig (restriktiv enn åpen)

som åpen tilgang kan offentlige enheter også nås innenfor eller utenfor en modul. Det er stor forskjell på åpent og offentlig.

offentlig klasse kan ikke underklasseres, og offentlig metode kan ikke overstyres utenfor den definerte modulen. Må ha til underklasse eller overstyre innenfor modulen der de definert.

Sjekk eksemplet nedenfor

//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

intern ( tilgangskontroll på modulnivå)

«intern» aktiver bruk av enheter hvor som helst i den definerte modulen. «intern» er standard tilgangsnivå. Normalt er en modul et rammeverk eller en app som kan brukes som en enkelt enhet.

i et mål (modul) er alle enhetene som standard interne (hvis eksplisitt ikke definerte noen tilgangskontroll). Det er definert på den måten at alt inne i modulen kan nås av alle fra hvor som helst i den modulen.

fileprivate( tilgangskontroll på filnivå)

fileprivate-enheter kan bare være tilgjengelige i en swift-fil. En rask fil kan ha flere klasser eller strukturer. Alle filen private enheter inne i en swift-fil kan nås av alle klasser eller strukturer i den filen. Uten dem kan ikke andre klasser utenfor den filen få tilgang til dem. Det skjuler vanligvis implementeringen fra andre kildefiler av modulen.

//** 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")
}
}

privat( tilgangskontroll på klassenivå)

privat er den mest brukte og mest begrensede tilgangskontrollen. De private enhetene kan bare få tilgang til klassen (inkludert utvidelse) de erklærte. Det brukes vanligvis til å skjule den interne implementeringen eller funksjonaliteten utenfor en bestemt klasse.

// ** 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")
}
}

Forskjell mellom swift access control

Nå ser vi forskjellen mellom disse tilgangsmodifikatorene basert på forskjellige parametere som en tabellform

Gratulerer 🎉 🎉 🎉 jeg antar nå at du har en ide om tilgangskontroll i swift-programmeringsspråket. Du vil finne en kort diskusjon av dem på swift offisiell dokumentasjon.

hvis du fant denne artikkelen nyttig kan du dele og gi noen klapp 👏 👏 👏
sjekk mine andre artikler på medium og Koble meg på linkedin.

Takk for at du leser & Glad koding 🙂

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.