Err… not “inefficient”. I meant “bad style”.

On 26 Sep 2013, at 02:14, Uli Kusterer <witness.of.teacht...@gmx.net> wrote:
> On 22 Sep 2013, at 22:44, Kyle Sluder <k...@ksluder.com> wrote:
>> You're both wrong. CGImageRelease is documented to be functionally 
>> equivalent to CFRelease, except for the non-NULL requirement.
>> 
>> The reason you can call CGImageRelease with a NULL argument is simply 
>> because it doesn't do any dispatch. CFRelease dispatches through the vtable 
>> of the object you hand it without checking for NULL.
>> 
>> I prefer to call the more specific release if I know the type of the thing 
>> I'm releasing.
> 
> As far as I’ve been informed, there are two reasons why certain APIs have a 
> specialized version of retain/release:
> 
> 1) They weren’t CFTypes on Mac OS 9 or earlier OS X releases, and were only 
> later turned into CFTypes.
> 
> 2) Apparently some members of the CoreFoundation team argue that checking for 
> NULL is inefficient and thus insist on CFRetain/CFRelease crashing on NULL so 
> people notice when they’re not writing proper code. People on other teams 
> disagree, and thus write their own versions of retain/release calls that *do* 
> check for NULL to save themselves the pain.
> 
> In any case, as long as a type is documented as being a CFType, toll-free 
> bridged to a Cocoa type or their retain/release calls are documented as being 
> equivalent to CFRetain/CFRelease, calling the latter is safe (but check for 
> NULL). If not, treat them as if they’re not CFTypes, because they definitely 
> don’t fulfil the contract. Don’t put non-CFTypes in arrays/dictionaries 
> unless you’re providing your own retain/release callbacks.
> 
> Anyway, pretty much everything these days is a CFType, so using the dedicated 
> retains/releases in favor of CFRetain/CFRelease (or Cocoa’s -retain/-release) 
> is not necessary.
> 
> Cheers,
> -- Uli Kusterer
> “The Witnesses of TeachText are everywhere...”
> http://zathras.de
> 
> 
> _______________________________________________
> 
> 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/witness.of.teachtext%40gmx.net
> 
> This email sent to witness.of.teacht...@gmx.net

Cheers,
-- Uli Kusterer
“The Witnesses of TeachText are everywhere...”
http://zathras.de


_______________________________________________

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