(I hate the fact that I cannot comment yet, as my reputation is not high enough, so the reason for this "answer")
@ user57368 is correct in the first paragraph, however there are (based on the original question) several “problems” with the last two paragraphs:
GCD (Apple's "excellent" streaming processing tool called Grand Central Dispatcher) is a streaming processing using libdispatch that provides the "dispatch_ *" functions. GCD does a lot of good (and makes the code "nicer") using the block construct. HOWEVER GCD does not need blocks, as there are functional versions of dispatch_ * calls.
Blocks is a lamdba-based construct that is independent of and does not provide GCD / libdispatch functionality. Both of them were introduced by Apple simultaneously in the world of MacOSX / iOS / Xcode, but they are independent of each other.
PS: there is a libdispatch implementation for FreeBSD that I saw recently, and some attempts to implement the option on Linux too.
Hvisage
source share