Re: looking for a memory problem
Re: looking for a memory problem
- Subject: Re: looking for a memory problem
- From: Sean McBride <email@hidden>
- Date: Fri, 20 Jul 2012 17:11:48 -0400
- Organization: Rogue Research Inc.
On Thu, 19 Jul 2012 09:43:12 +1000, Shane Stanley said:
>> But you can prepare your code slowly, in a way that supports both. ex:
>> - replace all use of NSAllocateCollectable with malloc/free
>> - change 'retain' to 'strong' in property declarations
>> - replace CFMakeCollectable with CFBridgingRelease
>> - replace NSMakeCollectable with a nil check and CFBridgingRelease
>
>Thanks -- I didn't realize the last two.
>
>So you are saying I can include things like __bridge and
>__bridge_retained in GC code, and they'll just be ignored until I flick
>the switch?
Actually, I wasn't saying that. If you look in the header at how CFBridgingRelease is defined:
#if __has_feature(objc_arc)
NS_INLINE CF_RETURNS_RETAINED CFTypeRef CFBridgingRetain(id X) {
return (__bridge_retained CFTypeRef)X;
}
#else
NS_INLINE id CFBridgingRelease(CFTypeRef CF_CONSUMED X) {
return [(id)CFMakeCollectable(X) autorelease];
}
#endif
you see that it does the expected thing in either GC or ARC. Very useful. Just beware passing nil, which is ok with NSMakeCollectable but not so at the CF layer.
--
____________________________________________________________
Sean McBride, B. Eng email@hidden
Rogue Research www.rogue-research.com
Mac Software Developer Montréal, Québec, Canada
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden