To understand what ARC does here:

1. You have a local variable called testRunCase. The object returned from `objectForKey:` is retained. +1
2. You then call `saveObject:callback:` and pass in a block. This is a synchronous call.
3. You pass `testRunCase` as a parameter to the method. The method itself will retain it and release it as necessary. Assume +0
4. `testRunCase` is referenced in the block. The block will retain it. +1
5. `testRunCase` is referenced in the dispatch, the second block will retain it +1
6. The first block completes. `testRunCase` is released. -1
7. The method will return, `testRunCase` is released -1
8. The dispatch_async block will complete asynchronously, and release it -1

Net: 0