http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47012
Nicola Pero <nicola at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2010.12.19 18:31:43 CC| |nicola at gcc dot gnu.org Ever Confirmed|0 |1 --- Comment #1 from Nicola Pero <nicola at gcc dot gnu.org> 2010-12-19 18:31:43 UTC --- Hi Jonathan nice to hear from you again (we met at Fosdem a few years ago, not sure you remember me; I do remember you). ;-) You are right that the GNU runtime does [[x retain] autorelease] before returning the value for an object, nonatomic synthesized property . The reason everyone but Apple does it, I suppose, it is because everyone felt it is a bug in the Apple implementation. ;-) The additional retain/autorelease should make it safer (but slower) than the Apple implementation; I don't think it should cause it to behave differently (other than prevent the object from being released until the next autorelease pool is emptied). Do you have a testcase where an actual difference in behaviour (other than the object being safe to use for longer, and the implementation with autorelease/retain being obviously slower) can be seen ? I guess you're concerned about performance ? Do you have any evidence that Apple did that on purpose and it's not a bug ? If you have any such evidence [ie, they won't "fix" it at the next release and we'll suddenly be the "broken" ones ;-)], we should certainly change it to behave in the same way. Maybe we should change it to behave in the same way anyway ;-) Thanks PS: Your contribution to GCC's libobjc would be much appreciated. The existing implementation of properties accessors is fairly finished though -- http://gcc.gnu.org/viewcvs/trunk/libobjc/accessors.m?revision=165903&view=markup It would be a one-liner to make the change if we want to.