Ist IBOutlet in Ihren iOS-Apps privat?

Bild

Sie haben wahrscheinlich ein Storyboard oder XIB verwendet, um Schnittstellen zu gestalten? Das Layout des Codes ist in Ordnung, aber manchmal ist es viel einfacher zu verstehen, wie eine der Komponenten der Benutzeroberfläche funktioniert, wenn Sie sie sehen und nicht lesen. In diesem Beitrag möchte ich die Notwendigkeit diskutieren, den privaten Modifikator für IBOutlet zu verwenden.

Entwickler, für die die IBOutlet-Kapselung offensichtlich ist, werden wahrscheinlich nicht überrascht sein, aber die Umfrage am Ende des Artikels kann interessant sein.

Angenommen, Sie erstellen ein IBOutlet (einen Link zu einer Ansicht aus einem Storyboard) für eines Ihrer UILabels. Beim Ziehen mit der Maus erstellt Xcode sorgfältig so etwas wie

@IBOutlet weak var myLabel: UILabel! 

Ich habe dieses Design lange Zeit als optimal angesehen, bis mein Kollege fragte, warum Ihr IBOutlet nicht privat ist.

Warum sollte ich eigentlich alle IBOutlets von außen zugänglich lassen?
Stellen Sie sich ein klassisches Problem vor: Wir haben eine Zelle, in der beispielsweise der Kontakt einer Person angezeigt wird

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

Durch Hinzufügen von privat zum vertrauten IBOutlet können wir sicherstellen, dass die angegebenen Felder der Zelle nicht von einer anderen Klasse festgelegt werden. Dies kann besonders während der Teamarbeit nützlich sein, wenn jemand durch Nachlässigkeit / Zeitmangel / Dummheit (bei Bedarf unterstreichen) versucht, die Farben, den Text oder einige andere Eigenschaften der Zellenbeschriftungen direkt in der tableView-Methode (_: cellForRowAt :) festzulegen. .

Stellen Sie sich vor, eine Zelle oder ein ganzer ViewController enthält viele IBOutlets mit einer Vielzahl von Anzeigeeinstellungen. Ist es nicht einfacher, sich durch Hinzufügen von privat zu sichern, als zu suchen, warum sich das Erscheinungsbild des Elements plötzlich geändert hat oder der Gestenerkenner von einem Ort aus angezeigt wurde, der unerwartetes Verhalten hervorruft?

PS: Wenn Sie nach dem Lesen private für IBOutlets verwenden möchten, können Sie der Einfachheit halber ein Snippet dafür in Xcode erhalten.

Das Folgende ist eine Umfrage. Wenn Sie Ihre Antwortoption kommentieren möchten, können Sie diese gerne kommentieren.

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


All Articles