The question says it all. Why:
(void)methodWithParamA:(id)paramA paramB:(id)paramB;
[obj methodWithParamA:valA paramB:valB];
and:
void(^ block)(id paramA, id paramB);
block(valA, valB);
I'm not sure I'll necessarily gain anything by learning the answer to this question, but I'm baffled that one language can have so many disparate syntaxes...