Odio los bloques. Están destinados a hacer que el código sea más conciso, pero no pude encontrar nada más feo. Por ejemplo, con AFNetworking:¿Hay alguna manera de pasar métodos como bloques?
AFJSONRequestOperation* operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request
requestsuccess:^(NSURLRequest *request, NSURLResponse *response, id JSON) {
// Some
// very
// long
// (and as ugly as blocks)
// processing
}
failure:^(NSURLRequest *request, NSURLResponse *response, NSError *error, id JSON)) {
// Failure code
}]
Algo como esto hubiera sido mucho mejor:
AFJSONRequestOperation* operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request
requestsuccess:@selector(requestSuccess:response:json:)
failure:@selector(requestSuccess:response:error:)]
lo tanto, es posible utilizar los selectores de métodos como bloques? Si no, ¿cómo puedo mejorar el código de bloque?
Me molesta, ya que estos bloques parecen ser el futuro de la programación objetivo-c y simplemente NO son legibles.
Los bloques al principio pueden parecer 'feos' pero son poderosos y hay razones específicas por las que 'parecen ser el futuro'. Te recomendaría este artículo para tener una buena idea: http://ios-blog.co.uk/articles/tutorials/programming-with-blocks-an-overview/ – Alladinian
Los bloques no hacen que el código sea más conciso, hacen codigo mas poderoso – dreamlax
Es una pregunta válida, creo. Dado que los bloques pueden recibir parámetros (0..n) y devolver un parámetro o un vacío, los métodos deben poder usarse como bloques ... o para decirlo de otra manera, sería bueno definir bloques en el nivel de clase. No creo que puedas ... –