Apakah IBOutlet pribadi di aplikasi iOS Anda?

gambar

Anda mungkin menggunakan Storyboard atau XIB untuk tata letak antarmuka? Tata letak dari kode baik-baik saja, tetapi kadang-kadang lebih mudah untuk memahami bagaimana salah satu komponen antarmuka bekerja dengan melihatnya dan tidak membacanya. Dalam posting ini, saya ingin membahas perlunya menggunakan pengubah pribadi untuk IBOutlet.

Pengembang yang enkapsulasi IBOutlet jelas, tidak mungkin terkejut, tetapi survei di akhir artikel mungkin menarik.

Bayangkan Anda akan membuat IBOutlet (tautan ke Tampilan dari Storyboard) untuk setiap UILabel Anda. Saat menyeret dengan mouse, Xcode dengan hati-hati menciptakan sesuatu seperti

@IBOutlet weak var myLabel: UILabel! 

Untuk waktu yang lama saya menganggap desain ini optimal, sampai rekan saya bertanya mengapa IBOutlet Anda tidak pribadi?

Bahkan, mengapa saya harus membiarkan semua IBOutlet dapat diakses dari luar?
Bayangkan masalah klasik - kami memiliki sel tempat, misalnya, kontak seseorang ditampilkan

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

Dengan menambahkan pribadi ke IBOutlet yang dikenal, kami dapat menjamin bahwa bidang yang ditentukan dari sel tidak akan ditetapkan dari kelas lain. Ini bisa sangat berguna selama kerja tim, ketika seseorang, melalui kecerobohan / kurangnya waktu / kebodohan (garis bawah seperlunya), mencoba mengatur warna, teks, atau beberapa properti lain dari Label Sel secara langsung dalam metode tableView (_: cellForRowAt :) .

Bayangkan sebuah sel atau seluruh ViewController berisi banyak IBOutlets, yang memiliki banyak pengaturan tampilan. Bukankah lebih mudah mengamankan diri Anda dengan menambahkan pribadi daripada mencari mengapa tampilan elemen tiba-tiba berubah atau Gesture Recognizer muncul dari suatu tempat yang membuat perilaku tidak terduga?

PS: Jika setelah membaca Anda ingin menggunakan pribadi untuk IBOutlets, maka untuk kesederhanaan Anda bisa mendapatkan potongan untuk ini dalam Xcode.

Berikut ini adalah survei, jika Anda ingin mengomentari opsi jawaban Anda, selamat datang untuk berkomentar.

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


All Articles