On Oct 7, 2013, at 1:44 PM, Sean McBride <[email protected]> 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 ([email protected])
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 [email protected]