Read the memory rules on developer.apple.com. Never trust anyone who repeats them like “you used to call copy / alloc / preserve” - this is not a rule that actually says something like “you got the object through a method with copy, new or alloc as part of the name ". Again, don't trust me, read developer.apple.com
As for NSError * *, this is simply wrong. METHOD takes NSError * * as an argument, that is, a pointer to NSError *. Its POINTER TO NSError *, which will be populated with an NSError address that comes from somewhere, and you have no right to guess where.
You can pass a pointer to NSError * - something else is wrong.
Also, you should not assume that NSError is automatically thrown. It can be singleton, it can be any number of alternatives. All you need to know is that "you have not saved it, you do not need to let it go."
Jeff
source share