O IBOutlet é privado em seus aplicativos iOS?

imagem

Você provavelmente usou um Storyboard ou XIB para fazer o layout das interfaces? O layout do código é bom, mas às vezes é muito mais fácil entender como um dos componentes da interface funciona vendo e não lendo. Neste post, quero discutir a necessidade de usar o modificador privado para o IBOutlet.

Os desenvolvedores para os quais o encapsulamento do IBOutlet é óbvio provavelmente não serão surpreendidos, mas a pesquisa no final do artigo pode ser interessante.

Imagine que você criará um IBOutlet (um link para uma Vista de um Storyboard) para qualquer um dos seus UILabel. Ao arrastar com o mouse, o Xcode cria cuidadosamente algo como

@IBOutlet weak var myLabel: UILabel! 

Por um longo tempo, considerei esse design ideal, até que meu colega perguntou por que o seu IBOutlet não é privado?

De fato, por que devo deixar todos os IBOutlets acessíveis de fora?
Imagine um problema clássico - temos uma célula na qual, por exemplo, o contato de alguém é exibido

 import UIKit class ContactCell: UITableViewCell { @IBOutlet private weak var nameLabel: UILabel! @IBOutlet private weak var positionLabel: UILabel! override func awakeFromNib() { super.awakeFromNib() } func setupCell(withContact contact: Contact) { nameLabel.text = contact.name positionLabel.text = contact.position } } 

Adicionando private ao IBOutlet familiar, podemos garantir que os campos especificados da célula não serão configurados a partir de outra classe. Isso pode ser especialmente útil durante o trabalho em equipe, quando alguém, por descuido / falta de tempo / estupidez (sublinhado conforme necessário), tenta definir as cores, o texto ou outras propriedades dos Rótulos das células diretamente no método tableView (_: cellForRowAt :) .

Imagine que uma célula ou um ViewController inteiro contenha muitos IBOutlets, que possuem várias configurações de exibição. Não é mais fácil se proteger adicionando private do que procurar por que a aparência do elemento mudou repentinamente ou o Gesture Recognizer apareceu de algum lugar que define um comportamento inesperado?

PS: Se, após a leitura, você desejar usar o privado para IBOutlets, então, por simplicidade, você poderá obter trechos para isso no Xcode.

A seguir, uma pesquisa, se você quiser comentar sua opção de resposta, bem-vindo ao comentar.

Source: https://habr.com/ru/post/pt424843/


All Articles