Io odio i blocchi. Hanno lo scopo di rendere il codice più conciso, ma non ho trovato nulla di più brutto. Ad esempio, con AFNetworking:C'è un modo per passare i metodi come blocchi?
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
}]
Qualcosa del genere sarebbe stato molto meglio:
AFJSONRequestOperation* operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request
requestsuccess:@selector(requestSuccess:response:json:)
failure:@selector(requestSuccess:response:error:)]
Quindi, è possibile utilizzare i selettori del metodo come blocchi? In caso contrario, come posso migliorare il codice di blocco?
Mi dà fastidio, poiché questi blocchi sembrano essere il futuro della programmazione degli obiettivi e sono semplicemente NON leggibili.
I blocchi all'inizio possono sembrare "brutti" ma sono potenti e ci sono ragioni specifiche per cui "sembrano essere il futuro". Ti consiglierei questo articolo per avere una buona visione: http://ios-blog.co.uk/articles/tutorials/programming-with-blocks-an-overview/ – Alladinian
I blocchi non rendono il codice più conciso, fanno codice più potente. – dreamlax
È una domanda valida, penso. Dato che i blocchi possono sia ricevere parametri (0..n) che restituire un parametro o void, i metodi dovrebbero essere utilizzabili come blocchi ... o per dirla in altro modo, sarebbe bello definire i blocchi a livello di classe. Non penso che tu possa ... –