Guidelines for Cocoa frameworks supporting garbage collection?
Guidelines for Cocoa frameworks supporting garbage collection?
- Subject: Guidelines for Cocoa frameworks supporting garbage collection?
- From: Bill Cheeseman <email@hidden>
- Date: Sat, 05 Jul 2008 17:23:45 -0400
- Thread-topic: Guidelines for Cocoa frameworks supporting garbage collection?
I've searched everywhere I can think of, but I'm not finding much help on
how to design Cocoa frameworks for Leopard that support both retain/release
and garbage collection. Can anybody supply a good link apart from the Apple
documentation?
Here's a specific question: My frameworks contain classes that declare
instance variables derived from CFType. For example, CGEventRef and
AXUIElementRef. In reading the "Instance variables" topic in the "Core
Foundation Variables" section of the "Garbage Collection Programming Guide,"
I see the statement, "If you declare a Core Foundation structure as an
instance variable, the compiler regards it only as an opaque structure
pointer, not as an object.... To indicate that a Core Foundation structure
should be treated as a collectable object, you use the __strong keyword."
The example given declares a CFType-derived object as an instance variable
in the interface part of a class like this:
__strong CFDateRef myDate;
So, I guess my frameworks should declare ...
__strong CGEventRef myEvent;
__strong AXUIElementRef myUIElement;
... if I am going to advertise the frameworks as supporting both
retain/release and garbage collection. Is that right?
It's not that the documentation cited above is ambiguous. It's just that I
feel very much at sea in the garbage collection world, and I crave a little
more hand-holding than I'm finding so far.
Plus, I've already released one of my frameworks publicly, and it does NOT
use the __strong keyword. I'm guessing I should get a revision out there
pronto -- although I hasten to add that I know the framework works fine with
a retain/release application.
If anybody cares to take a look and tell me about any other failings in the
framework from the GC perspective, it's installed as part of my free PreFab
Event Taps Testbench product, at
<http://prefabsoftware.com/eventtapstestbench/>. I've already included
-finalize methods to complement the -dealloc methods. I don't think I need
to do anything else, but I'm far from sure.
--
Bill Cheeseman - email@hidden
Quechee Software, Quechee, Vermont, USA
www.quecheesoftware.com
PreFab Software - www.prefabsoftware.com
_______________________________________________
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