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

Reply via email to