But to see if I can explain delegates and blocks. I'll start with blocks first.
A block is just a function assigned to a variable. I think you have some C background, right? Well if you ever worked with function pointers, blocks and function pointers are kind of the same thing. But let's imagine a function. I won't use Objective C here, just a fake language I made up now.
void sayHello(name) {
print("hello " + name);
}