Arek Holko:

Now, all we need to do is call dch_checkDeallocation() from viewDidDisappear(_:) in all view controllers (except for those that we keep alive after they’re removed from their parents or dismissed) […] If there’s a leak, we’ll see an assertion failure (only in -Onone builds)

That’s a really clever way to ensure your view controllers are all deallocated.