Because (I believe) `return self` doesn't retain the object; it gets stored in a NSDictionary non-retained, and you get bad_access.

It's not only this line, you need to remove the ARC flags from the file and adjust the other calls.
However - using map tables simplified the internals.