Modifying data from parent scope inside a dispatch queue

Viewed 1451

According to the Concurrency Programming guide:

When blocks are added to a dispatch queue, these values must typically be left in a read-only format. However, blocks that are executed synchronously can also use variables that have the __block keyword prepended to return data back to the parent’s calling scope.

I have been altering variables created outside the queue, but I have never specified them with __block so I'm wondering just exactly when or why this is needed. Or is it that instance variables are always inherently alterable by blocks, as if they have __block assigned to them from behind the scenes?

Update: I should add too that I am using asynchronous queues, while the above says that variables can be altered only in synchronous queues (with __block)

2 Answers
Related