On Oct 7, 2013, at 1:44 PM, Sean McBride <s...@rogue-research.com> wrote:
> Hi all, > > I understand the issue with NSError output parameters and ARC, and that it > automatically 'adds' an __autoreleasing, but I'm wondering what is the > recommended way to declare NSError output parameters in new code these days: > > > 1) No decorations, ex: > > - (BOOL)foobar:(NSError **)outError; > > > 2) 'out' tag, ex NSKeyValueCoding.h > > - (BOOL)validateValue:(inout id *)ioValue forKey:(NSString *)inKey error:(out > NSError **)outError; > > > 3) explicit __autoreleasing > > - (BOOL)foobar:(NSError * __autoreleasing *)outError; > > > Which is preferable? I'm interested both in term of correctness and > style/coding standards. If you know the clients of your code are always going to be using ARC, you could use (NSError * __strong *). This would slightly reduce the number of autoreleased objects you generate, as well as prevent crashes caused by things like this: - (BOOL)foo:(NSError * __autoreleasing *)error { @autoreleasepool { return [someObject bar:error]; } } Charles _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com