Seluruh proses anda tiada kaitan dengan penutupan... Memandangkan pembolehubah anda pasti akan mempunyai nilai, anda sebenarnya boleh menggunakan tanda seru dan bukannya tanda soal, jadi anda tidak perlu menetapkan nol padanya semasa membuat dan anda tidak perlu membongkarnya secara manual apabila mendapatkannya. Baiklah, saya hanya bercakap tentang masalah kecil dalam kod anda Mengenai sebab untuk soalan yang anda ingin tanyakan, ia telah disebutkan di atas. Anda boleh membuat panggilan balik dan menggantung panggilan balik ini pada connectHost. Cuma ini akan membuka lubang pada setiap lapisan untuk menghantar panggilan balik... Sudah tentu, terdapat penyelesaian yang elegan Terdapat projek di Github yang dipanggil Async yang boleh anda rujuk, kerana saya tidak melihat pelaksanaannya dengan teliti dan sukar untuk menunjuk-nunjuk di sini.
Saya rasa ini milik anda tiada kaitan dengan penutupan
Closure
Jawapan berikut
Masalah dengan Ranap ini jelas, Anda terpaksa membongkar jenis
nil
dengan nilaiOptional
Sebab
connectToHost()
anda hendaklah kaedah tak segerak Selepas baris ini dilaksanakan,return registerRes!
Tetapi pada masa ini, sambungan anda masih dalam proses dan belum dipanggil semula
func xmppStreamDidRegister(sender: XMPPStream!)
kaedahregisterRes
anda masih menjadi nilai semasa permulaannil
Seluruh proses anda tiada kaitan dengan penutupan... Memandangkan pembolehubah anda pasti akan mempunyai nilai, anda sebenarnya boleh menggunakan tanda seru dan bukannya tanda soal, jadi anda tidak perlu menetapkan nol padanya semasa membuat dan anda tidak perlu membongkarnya secara manual apabila mendapatkannya. Baiklah, saya hanya bercakap tentang masalah kecil dalam kod anda Mengenai sebab untuk soalan yang anda ingin tanyakan, ia telah disebutkan di atas. Anda boleh membuat panggilan balik dan menggantung panggilan balik ini pada connectHost. Cuma ini akan membuka lubang pada setiap lapisan untuk menghantar panggilan balik... Sudah tentu, terdapat penyelesaian yang elegan Terdapat projek di Github yang dipanggil Async yang boleh anda rujuk, kerana saya tidak melihat pelaksanaannya dengan teliti dan sukar untuk menunjuk-nunjuk di sini.