There are questions with the similar to this one, what I have learned is that, completion handler using call back function, blocks are just anonymous functions or closures
Example of block and completion handler
class func scheduledTimer(withTimeInterval interval: TimeInterval,
repeats: Bool,
block: @escaping (Timer) -> Void) -> Timer
func startUpdates(from start: Date,
withHandler handler: @escaping CMPedometerHandler)
Question1
I've noticed that another difference is the completion handler has the typealias for the type, Does this applies to all ios framework design?
typealias CMPedometerHandler = (CMPedometerData?, Error?) -> Void
Question2
Does blocks also use call back function? Blocks are also has the escaping keywords, which means the closure will be called after the outer function has been returned, this sounds very "call back" to me.
Question3
If the answer for question 2 is yes, then what's the reason to reinvent the wheels, why not just call them all blocks or completion handlers