From section 7.5: http://clang.llvm.org/docs/AutomaticReferenceCounting.html#blocks

> whenever these semantics call for retaining a value of block-pointer type, it has the effect of a `Block_copy`. The optimizer may remove such copies when it sees that the result is used only as an argument to a call.

Which part of that thread seemed like a special case?

> I don't like coding as if every retain will automatically be a copy

We code as if every copy (of an immutable instance) will automatically be a retain. Aren't retain and copy synonyms for immutables?