conform documentației oficiale swift

„controlul accesului restricționează accesul la părți ale codului dvs. din codul din alte fișiere și module sursă. Această caracteristică vă permite să ascundeți detaliile de implementare ale codului dvs. și să specificați o interfață preferată prin care acel cod poate fi accesat și utilizat.”

Swift 5 are cinci de control al accesului. Ele sunt deschise, publice, interne, fileprivate și private. Aceste controale de acces sunt definite pe baza utilizărilor din modulul și fișierul sursă. În acest tutorial, vom afla ce, unde și cum să folosim controlul accesului în swift.

deschis (mai puțin restrictiv)

orice definește cu deschis poate fi accesat în interiorul sau fără modul. entitățile la nivel de acces deschis pot fi accesate de oriunde. Asta înseamnă că o variabilă deschisă poate accesa, o funcție deschisă poate suprascrie și clasa deschisă poate fi subclasă în interiorul unui modul și în afara unui modul prin importarea acelui modul.

un exemplu este clasa „UITableViewCell” din cadrul UIKit. Putem subclasa orice clasă ca o clasă UITableViewCell prin importul modulului UIKit. Dacă vedeți definiția „UITableViewCell”, veți vedea controlul accesului deschis înainte de definiția clasei din modulul UIKit. De aceea putem subclasa orice clasă ca clasă UITableViewCell importând UIKit.

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

public (restrictiv decât deschis)

la fel ca accesul deschis, entitățile publice pot fi accesate și în interiorul sau în afara unui modul. Dar există o diferență majoră între deschis și public.

clasa publică nu poate fi subclasată, iar metoda publică nu poate fi înlocuită în afara modulului definit. Trebuie să aibă de a subclasa sau suprascrie în cadrul modulului în care au definit.

verificați exemplul de mai jos

//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 ( control acces la nivel de modul)

„intern” permite utilizarea entităților oriunde în interiorul modulului definit. „intern” este nivelul de acces implicit. În mod normal, un modul este un cadru sau o aplicație care poate fi utilizată ca o singură unitate.

în interiorul unei ținte (modul) toate entitățile sunt implicit interne (dacă în mod explicit nu au definit niciun control de acces). Este definit astfel încât totul din interiorul modulului poate fi accesat de oricine de oriunde din acel modul.

fileprivate( control acces la nivel de fișier)

entitățile fileprivate pot fi accesibile numai într-un fișier swift. Un fișier swift poate avea mai multe clase sau structuri. Toate entitățile private de fișiere dintr-un fișier swift pot fi accesate de toate clasele sau structurile din acel fișier. Fără ele, orice alte clase din afara acelui fișier nu le pot accesa. În general, ascunde implementarea din alte fișiere sursă ale modulului.

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

private( control acces la nivel de clasă)

private este cel mai utilizat și mai restricționat control acces. Entitățile private pot accesa numai în cadrul clasei (inclusiv extensia) pe care au declarat-o. În general, este utilizat pentru a ascunde implementarea internă sau funcționalitatea în afara unei anumite clase.

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

diferența dintre controlul accesului rapid

acum vom vedea diferența dintre acești modificatori de acces pe baza unor parametri diferiți ca formă tabelară

Felicitari, cred ca acum ai o idee despre controlul accesului in limbajul de programare Swift. Veți găsi o scurtă discuție despre acestea pe documentația oficială swift.

dacă ați găsit acest articol util, vă rugăm să partajați și să dea unele clap
verifica alte articole mele pe mediu și conectați-mă pe LinkedIn.

Vă mulțumim că ați citit &codificare fericită

Lasă un răspuns

Adresa ta de email nu va fi publicată.