diff options
Diffstat (limited to 'base/mac/foundation_util.mm')
-rw-r--r-- | base/mac/foundation_util.mm | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/base/mac/foundation_util.mm b/base/mac/foundation_util.mm index e8c3efc..6ad3b01 100644 --- a/base/mac/foundation_util.mm +++ b/base/mac/foundation_util.mm @@ -235,6 +235,17 @@ void NSObjectRelease(void* obj) { [nsobj release]; } +void* CFTypeRefToNSObjectAutorelease(CFTypeRef cf_object) { + // When GC is on, NSMakeCollectable marks cf_object for GC and autorelease + // is a no-op. + // + // In the traditional GC-less environment, NSMakeCollectable is a no-op, + // and cf_object is autoreleased, balancing out the caller's ownership claim. + // + // NSMakeCollectable returns nil when used on a NULL object. + return [NSMakeCollectable(cf_object) autorelease]; +} + static const char* base_bundle_id; const char* BaseBundleID() { |