enligt swift: s officiella dokumentation

”åtkomstkontroll begränsar åtkomst till delar av din kod från kod i andra källfiler och moduler. Med den här funktionen kan du dölja implementeringsinformationen för din kod och ange ett föredraget gränssnitt genom vilket koden kan nås och användas.”

Swift 5 har fem åtkomstkontroll. De är öppna, offentliga, interna, fileprivate och privata. Dessa åtkomstkontroller definieras baserat på användningarna i modulen och källfilen. I den här handledningen lär vi oss vad, var och hur du använder åtkomstkontroll i swift.

öppen (mindre restriktiv)

allt definierar med öppen kan nås inom eller utan modulen. enheter på öppen åtkomstnivå kan nås var som helst. Det betyder att en öppen variabel kan komma åt, en öppen funktion kan åsidosätta och öppen klass kan vara underklass inuti en modul och utanför en modul genom att importera den modulen.

ett exempel är klassen ”UITableViewCell” i UIKit-ramverket. Vi kan underklass någon klass som en uitableviewcell klass genom att importera UIKit modulen. Om du ser definitionen av” UITableViewCell ” ser du open access control före klassdefinitionen i UIKit-modulen. Det är därför vi kan subclassing någon klass som en UITableViewCell klass genom att importera UIKit.

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

Offentlig (restriktiv än öppen)

liksom öppen åtkomst kan offentliga enheter också nås inom eller utanför en modul. Men det finns en stor skillnad mellan öppet och offentligt.

Offentlig klass kan inte underklassificeras och offentlig metod kan inte åsidosättas utanför den definierade modulen. Måste ha att underklass eller åsidosätta inom modulen där de definierade.

kontrollera exemplet nedan

//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 ( modulnivå åtkomstkontroll)

”intern” aktivera användning av enheter var som helst i den definierade modulen. ”intern” är standardåtkomstnivån. Normalt är en modul en ram eller app som kan användas som en enda enhet.

inuti ett mål (modul) alla enheter är som standard interna (om explicit inte definierade någon åtkomstkontroll). Det definieras så att allt inuti modulen kan nås av någon från var som helst inom den modulen.

fileprivate( file-level access control)

fileprivate-enheter kan bara vara tillgängliga i en swift-fil. En swift-fil kan ha flera klasser eller strukturer. Alla fil privata enheter i en swift-fil kan nås av alla klasser eller strukturer i den filen. Utan dem kan andra klasser utanför den filen inte komma åt dem. Det döljer i allmänhet genomförandet från andra källfiler i 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( klassnivå åtkomstkontroll)

privat är den mest använda och mest begränsade åtkomstkontrollen. De privata enheterna kan endast komma åt den klass (inklusive förlängning) som de deklarerade. Det används vanligtvis för att dölja den interna implementeringen eller funktionaliteten utanför en viss klass.

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

skillnad mellan snabb åtkomstkontroll

nu ser vi skillnaden mellan dessa åtkomstmodifierare baserat på olika parametrar som en tabellform

Grattis på födelsedagen jag antar att du nu har en uppfattning om åtkomstkontroll i Swift-programmeringsspråket. Du hittar en kort diskussion om dem på swift officiell dokumentation.

om du tyckte att den här artikeln var användbar, dela och ge lite klappubberi
kolla mina andra artiklar på medium och anslut mig på LinkedIn.

Tack för att du läste & Lycklig kodning av Macau

Lämna ett svar

Din e-postadress kommer inte publiceras.