Le 24 juin 2012 à 07:18, Roland King a écrit : > > On Jun 24, 2012, at 12:25 PM, Graham Cox wrote: > >> >> On 24/06/2012, at 1:55 PM, Jerry Krinock wrote: >> >>> Why didn't Apple do the same thing for ARC? >> >> >> Because ARC is a compiler technology that inserts -retain, -release >> automatically and silently into your code as it is compiled. The methods >> have to be there in order for memory management to work at runtime - ARC >> doesn't do anything at runtime, by then your code is exactly the same as if >> you'd written memory management manually (though hopefully without any >> mistakes!). >> >> --Graham >> > > They could still #define them at compile time to be nothing and then insert > the code to call the underlying functions just as they do now, that inserts > objc_release() and other calls directly into the compiled code anyway. > There's no incompatibility there. My guess is that Apple wanted to move > totally away from manual retain/release and have people not even see it, so > instead of #defining out the calls, they wrote the conversion tool which > removes them entirely, and does a few other things too, a clean-break > approach.
The less the compiler has too make assumption, the better. Converting code from manual ref counting to ARC is mostly doable automatically, but not always. So, instead of trying to do it each time you compile a file, Apple force you to do it once and for all (using the ARC migration assistant), and then don't have to include all the migration logic in the compiler. -- Jean-Daniel _______________________________________________ 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