Podemos declarar o bloco como abaixo em Objective-C.
typedef void (^CompletionBlock) (NSString* completionReason);
Estou tentando fazer isso no rapidinho, dá erro.
func completionFunction(NSString* completionReason){ }
typealias CompletionBlock = completionFunction
Erro: Uso de 'função de conclusão' não declarada
Definição:
var completion: CompletionBlock = { }
Como fazer isso?
Atualizar:
De acordo com a resposta de @jtbandes, posso criar um encerramento com vários argumentos, como
typealias CompletionBlock = ( completionName : NSString, flag : Int) -> ()
var
(ou seja,var completion: CompletionBlock = {....}
usando vários argumentos? Obrigado.Respostas:
A sintaxe para os tipos de função é
(in) -> out
.Observe que os parênteses em torno do tipo de entrada são necessários apenas a partir do Swift 3+.
fonte
typealias CompletionBlock = ( completionName : NSString, flag : Int) -> ()
reason
" do corpo do método "println(reason)
"Aqui está um blog incrível sobre fechamento rápido.
aqui estão alguns exemplos:
Como variável:
Como uma variável opcional:
Como um alias de tipo:
fonte