de acordo com a documentação oficial do swift

“o Controle de acesso restringe o acesso a partes do seu código a partir do código em outros arquivos e módulos de origem. Esse recurso permite ocultar os detalhes de implementação do seu código e especificar uma interface preferida através da qual esse código pode ser acessado e usado.”

Swift 5 tem cinco controle de acesso. Eles são abertos, públicos, internos, fileprivado e privado. Esses controles de acesso são definidos com base nos usos no módulo e no arquivo de origem. Neste tutorial, aprenderemos o que, onde e como usar o controle de acesso no swift.

aberto (menos restritivo)

qualquer coisa define com aberto pode ser acessado dentro ou sem o módulo. entidades de nível de acesso aberto podem ser acessadas de qualquer lugar. Isso significa que uma variável aberta pode acessar, uma função aberta pode substituir e a classe aberta pode ser subclasse dentro de um módulo e fora de um módulo importando esse módulo.

um exemplo é a classe “UITableViewCell” no framework UIKit. Podemos subclassificar qualquer classe como uma classe UITableViewCell importando o módulo UIKit. Se você vir a definição de “UITableViewCell”, verá o controle de acesso aberto antes da definição de classe dentro do módulo UIKit. É por isso que podemos subclassificar qualquer classe como uma classe UITableViewCell importando UIKit.

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

público (restritivo do que Aberto)

como o acesso aberto, as entidades públicas também podem ser acessadas dentro ou fora de um módulo. Mas há uma grande diferença entre aberto e público.

a classe pública não pode ser subclassificada e o método público não pode ser substituído fora do módulo definido. Deve ter que subclasse ou substituir dentro do módulo onde eles definiram.

verifique o exemplo abaixo

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

interno (controle de acesso no nível do módulo)

“interno” habilite o uso de entidades em qualquer lugar dentro do módulo definido. “interno” é o nível de acesso padrão. Normalmente, um módulo é uma estrutura ou aplicativo que pode ser usado como uma única unidade.

dentro de um alvo (módulo) todas as entidades são por padrão internas (se explicitamente não definiu nenhum controle de acesso). É definido dessa forma que tudo dentro do módulo pode ser acessado por qualquer pessoa de qualquer lugar dentro desse módulo.

fileprivate( file-level access control)

as entidades fileprivate só podem ser acessíveis dentro de um arquivo swift. Um arquivo swift pode ter várias classes ou estruturas. Todas as Entidades Privadas de arquivo dentro de um arquivo swift podem ser acessadas por todas as classes ou estruturas desse arquivo. Sem eles, quaisquer outras classes fora desse arquivo não podem acessá-los. Geralmente oculta a implementação de outros arquivos de origem do módulo.

//** 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 (controle de acesso de nível de classe)

private é o controle de acesso mais usado e restrito. As entidades privadas podem acessar apenas dentro da classe (incluindo extensão) que declararam. Geralmente é usado para ocultar a implementação interna ou funcionalidade fora de uma classe específica.

// ** 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 entre swift de controle de acesso

Agora vamos ver a diferença entre os modificador de acesso baseados em diferentes parâmetros, como uma forma tabular

Parabéns 🎉 🎉 🎉 eu acho que agora você tem alguma idéia sobre o controle de acesso de swift linguagem de programação. Você encontrará uma breve discussão sobre eles na documentação oficial do swift.

se você achou este artigo útil, compartilhe e dê um aplauso 👏 👏 👏
verifique meus outros artigos no Medium e conecte-me no LinkedIn.

Obrigado por ler & codificação Feliz 🙂

Deixe uma resposta

O seu endereço de email não será publicado.