Kita dapat mendeklarasikan blok seperti di bawah ini di Objective-C.
typedef void (^CompletionBlock) (NSString* completionReason);
Saya mencoba melakukan ini dengan cepat, itu memberikan kesalahan.
func completionFunction(NSString* completionReason){ }
typealias CompletionBlock = completionFunction
Kesalahan: Penggunaan 'completeFunction' yang tidak diumumkan
Definisi:
var completion: CompletionBlock = { }
Bagaimana cara melakukannya?
Memperbarui:
Menurut jawaban @ jtbandes, saya bisa membuat penutupan dengan banyak argumen seperti
typealias CompletionBlock = ( completionName : NSString, flag : Int) -> ()
var
(yaitu,var completion: CompletionBlock = {....}
menggunakan banyak argumen? Terima kasih.Jawaban:
The sintaks untuk jenis fungsi adalah
(in) -> out
.typealias CompletionBlock = (NSString?) -> Void // or typealias CompletionBlock = (result: NSData?, error: NSError?) -> Void
var completion: CompletionBlock = { reason in print(reason) } var completion: CompletionBlock = { result, error in print(error) }
Perhatikan bahwa tanda kurung di sekitar tipe input hanya diperlukan pada Swift 3+.
sumber
typealias CompletionBlock = ( completionName : NSString, flag : Int) -> ()
reason
" dari tubuh metode "println(reason)
"Berikut adalah blog yang luar biasa tentang penutupan cepat.
Berikut beberapa contohnya:
Sebagai variabel:
var closureName: (inputTypes) -> (outputType)
Sebagai variabel opsional:
var closureName: ((inputTypes) -> (outputType))?
Sebagai alias tipe:
typealias closureType = (inputTypes) -> (outputType)
sumber