Swift中的模块化协议

Kecelakaan kerja yang saya alami ini bukan rekayasa。 ar! sesaat setelah kejadian itu warna merah ada dimana-mana。 saya震惊! Mereka membanjiri xcode sebagai tanda错误。

Begini kronologinya。

Tiket dan的最后期限是tak kenal kompromi的datang silih berganti。 Akhirnya demi kecepatan开发,saya menggunakan SJProgressHUD untuk merender tampilan加载。 Dengan membabibuta,SJProgressHUD dipasang di banyak ViewController。 Prinsip pertama yang saya langgar: 不要重复你的自我

塞莱赛项目。 Selanjutnya Tinggal维护Saja。 Pada awalnya项目dikembangkan dengan Swift 2.0。 Swift 3.0版本中的Namun Ada Kondisi Tertentu Yang Menyebabkan项目。 Maka kami diinstruksikan untuk melakukan revolusi !.

意粉代码harus segera di Refactor!

Hikmah yang bisa saya pelajari dari kejadian ini sebaiknya arsitektur apps dibuat semodular mungkin 。 好的,mari kita diskusikan solusinya。

Ada beberapa cara untuk memperbaiki 意大利面条代码 diatas。 Cara pertama ,dengan menurunkan(继承) class UIViewController melalui extension 。 Didalam的extension showLoadingshowErrorshowSucces

Nah ini dia cara ketiga yang saya tawarkan。 猩猩bilang bahwa inti dari Swift adalah 抽象和 简单 。 Saya buatkan sebuah适配器UILoadingView yang sangat fleksibel,bisa ditaruh sesuai kebutuhan。 Artinya apabila sebuah UIViewController涉及到showWaiting showWaiting() maka cukup mencolokkan适配器UILoadingView 。 Begini Implementasinya。

Mereka para ahli selalu berpesan,面向uk melakukan协议的编程,mulalilah dengan membuat协议。 Artinya Kita Mulai Dengan Sebuah Abstraksi tanpa Implementasi。

Berikutnya baru dibuat实施dar协议UILoadingView dengan cara meng- extension

Kalau dalam gambar,inisaya ilustrasikan dengan适配器。 Satu hal yang perlu digarisbawahi,… where Self: UIViewController artinya ekstensi yang dilakukan ini akan berjalan jika dan hanya jika dipasangkan dengan keluarga UIViewController 。 Sehingga dengan kata lain,适配器ini hanya cocok dipasangkan dengan UIViewController 。 Lain waktu dikemudian hari,paabila ada rencaa mengganti librari PKHUD dengan librari lain,saya cukup mer-factor Bagian ini saja。 Bagus kan ?! hehe .. Lalu bagaimana cara memasangkannya dengan UIViewController吗? 贝里库特·卡拉尼亚。

Kesimpulan。

Sebelum aplikasi kita kompleks,pikirkan betul-betul tentang moduleiti !. Semoga tulisan ini bermanfaat。