This document assumes ARC and Obj-C as of iOS 6.1 and Xcode 4.6.
In Obj-C, GCD will automatically retain objects, including self. In C++, you have to do this yourself for EVERY non-copied object referenced by a dispatch_async block.
#include <memory>
class Foo : std::enable_shared_from_this<Foo> {