risposta di Jacob è buona, tuttavia per rispondere alla parte di "come è questo diverso da un puntatore a funzione?":
1) Un blocco è non una funzione puntatore. I blocchi sono i suggerimenti di Apple su come rendere le funzioni di cittadini di prima classe in C/C++/Objective-C. È nuovo per iOS 4.0.
2) Perché introdurre questo strano concetto? Risulta che le funzioni di prima classe sono utili in diversi scenari, ad esempio gestendo blocchi di lavoro che possono essere eseguiti in parallelo, come in Grand Central Dispatch. Al di là di GCD, la teoria è abbastanza importante che ci sono interi sistemi software basati su di esso. Lisp è stato uno dei primi.
3) Si vedrà questo concetto in molte altre lingue, ma con nomi diversi. Ad esempio, Microsoft .Net ha lambdas e delegati (nessuna relazione con i delegati Objective-C), mentre i nomi più generici sono probabilmente funzioni anonime o first class functions.
Grazie mille, Jacob! Ora ho trovato tutorial su Blocks e ho imparato un po 'di più) – wh1t3cat1k