No you don't have to make a copy in this case. Why?
Since you do not store this block for later usage! You are just using this block immediately in invoked function, so you have a warranty that all references variables used int this block will be still valid.
You have to make a copy, if you are storing block for later usage!
I would say that it is even better to not create copy of block if it is possible. Blocks are created on stack not on heap, so creation of block is very fast operation. When you are creating a copy of block copy is created on heap (this is more expensive) and all strong references used in block have to be retained (another potentially costly operation) and some variables have to be copied (this is usually fast, except for some complex objects).