On May 4, 2011, at 6:03 AM, Joao Manuel Da Silva Neves wrote:
> Apple's documentation states: "The process of migrating a large project that 
> uses reference counting can be difficult and error-prone—some patterns that 
> work correctly with manual memory management will be incorrect after 
> translation. In general, it is recommended that you use garbage collection 
> only in new projects. If you already have a well-architected, well-understood 
> application that uses reference counting, there should be little reason to 
> migrate to GC"
> 
> Unfortunately we have a large project (think Apple's Aperture) that we're 
> considering for migration to GC in order to reduce memory crashers and 
> simplify memory management in the future. 
> Has anyone tried converting a large project to GC? If YES was it successful 
> and worth it? What were the main issues encountered during the conversion?

(Please don't post to multiple lists.)

Xcode converted to GC a few years ago.

Good:
* Lots and lots of crashes simply went away.
* Complex data structures and workflows were greatly simplified when they 
didn't need to worry about retain cycles.

Bad:
* Finding and fixing the many small GC-unsafe patterns is hard. (For example, 
uses of non-retaining CoreFoundation containers.)
* Rearchitecting larger GC-incompatible designs is hard. (For example, saving 
changes to a file upon last release.)
* If you are the first GC client of some system framework, you may find GC bugs 
in that framework. (This is less common now than when Xcode adopted GC.)
* Interoperating with C++ or CoreFoundation is hard.
* Any existing plug-ins will not be GC-compatible.


-- 
Greg Parker     gpar...@apple.com     Runtime Wrangler


_______________________________________________

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to