title: Given an asychronous block, how to know when the block will be completed?
body: <p>Suppose you are using an asynchronous block from the <code>ALAssetsLibrary</code> API such as <code>enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop)</code>. First off, Since the block is asynchronous, does this mean the system will automatically run the block on a separate thread of execution? If so, what is the best way to know when the block will be completed so I could perform some action like stopping an <code>UIActivityIndicator</code> from spinning or reloading a <code>UITableView</code>. IE like the <code>animateWithDuration</code> block which has a completion block that allows you to perform some action when the animation is complete. What is the pattern for doing something similar here?</p>