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