Приятной особенностью блоков является то, что они могут использоваться везде, где могут использоваться объекты, например, вы можете, например, хранить блоки в массиве или словаре. Еще одна интересная вещь - вы можете передавать блоки внутри объекта или между объектами в качестве аргументов метода, например ::100100
- (void)processDataWithBlock:(void (^)(void))block
+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations
Второй метод - это даже UIView
API. Можно утверждать, что функциональные указатели здесь подойдут, но это будет более сложным, менее гибким и непоследовательным. Кроме того, блоки могут обращаться к локальным переменным и переменным экземпляра, не передавая их в качестве аргументов.
Это мои 2 цента с точки зрения пользователя блоков, но я не эксперт ...