a swift hivatalos dokumentációja szerint

“a hozzáférés-vezérlés korlátozza a kód egyes részeihez való hozzáférést más forrásfájlokban és modulokban található kódokból. Ez a funkció lehetővé teszi, hogy elrejtse a kód implementációjának részleteit, és megadjon egy preferált felületet, amelyen keresztül a kód elérhető és használható.”

a Swift 5 öt hozzáférés-vezérléssel rendelkezik. Nyílt, nyilvános,belső, fájlprivát és privát. Ezek a hozzáférési vezérlők a modulban és a forrásfájlban található felhasználások alapján vannak meghatározva. Ebben az oktatóanyagban megtanuljuk, hogy mit, hol és hogyan kell használni a hozzáférés-vezérlést a swift-ben.

open (kevésbé korlátozó)

bármi, amit az open definiál, elérhető a modulon belül vagy anélkül. a nyílt hozzáférési szintű entitások bárhonnan elérhetők. Ez azt jelenti, hogy egy nyitott változó hozzáférhet, egy nyitott függvény felülbírálhatja, az open osztály pedig alosztály lehet egy modulon belül és egy modulon kívül az adott modul importálásával.

példa erre az “UITableViewCell” osztály az UIKit keretrendszerben. Bármely osztályt alosztályozhatunk UITableViewCell osztályként az UIKit modul importálásával. Ha látja az “UITableViewCell” meghatározását, akkor az UIKit modulban az osztálydefiníció előtt nyílt hozzáférés-vezérlés jelenik meg. Ezért tudjuk subclassing bármely osztály, mint egy UITableViewCell osztály importálásával UIKit.

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

nyilvános (korlátozó, mint a nyílt)

a nyílt hozzáféréshez hasonlóan a nyilvános entitások is elérhetők egy modulon belül vagy kívül. Nagy különbség van nyitott és nyilvános között.

a nyilvános osztály nem alosztályozható, és a nyilvános metódus nem írható felül a megadott modulon kívül. Kell, hogy alosztály vagy felülbírálja a modulon belül, ahol meghatározott.

ellenőrizze az alábbi példát

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

belső ( modulszintű hozzáférés-vezérlés)

“belső” entitások használatának engedélyezése a meghatározott modulon belül bárhol. a” belső ” Az alapértelmezett hozzáférési szint. Általában a modul egy keretrendszer vagy alkalmazás, amely egyetlen egységként használható.

egy cél (modul) belsejében az összes entitás alapértelmezés szerint belső (ha kifejezetten nem definiált hozzáférés-vezérlést). Úgy van meghatározva, hogy a modulon belül mindenhez bárki hozzáférhet, bárhonnan a modulon belül.

fileprivate( fájlszintű hozzáférés-vezérlés)

csak a fájlprivát entitások érhetők el swift fájlban. A swift fájlnak több osztálya vagy szerkezete lehet. A swift fájlban található összes fájl magán entitás elérhető a fájl összes osztályával vagy struktúrájával. Nélkülük a fájlon kívüli más osztályok nem férhetnek hozzá hozzájuk. Általában elrejti a megvalósítást a modul más forrásfájljaitól.

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

privát( osztályszintű hozzáférés-vezérlés)

privát A leggyakrabban használt és leginkább korlátozott hozzáférés-vezérlés. A magán entitások csak az általuk bejelentett osztályon belül férhetnek hozzá (beleértve a kiterjesztést is). Általában a belső megvalósítás vagy funkcionalitás elrejtésére használják egy adott osztályon kívül.

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

különbség a gyors hozzáférés-vezérlés között

most táblázatos formában látjuk a különbséget a hozzáférés-módosító között a különböző paraméterek alapján

Gratulálunk .. azt hiszem, most van néhány ötlete a hozzáférés-vezérlésről a Swift programozási nyelven. Rövid vitát talál róluk a swift hivatalos dokumentációjában.

ha hasznosnak találta ezt a cikket, kérjük, ossza meg és adjon meg néhány tapsot
ellenőrizze a többi cikket a medium-on, és csatlakozzon a LinkedIn-en.

Köszönöm, hogy elolvasta & Boldog kódolás ons

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.