> On 9 May 2016, at 09:25, Roland King <r...@rols.org> wrote: > > >> On 9 May 2016, at 10:11, Gerriet M. Denkmann <gerr...@mdenkmann.de> wrote: >> >> Thing *aThing = [ Thing new ]; >> >> void *thingData = [ aThing data ]; // pointer to a buffer owned by >> aThing >> >> … never use aThing after this point → Arc might release aThing right now >> … but do lots of things with thingData >> >> … no more need for thingData >> [ aThing release]; >> >> How to prevent Arc to release aThing before I have done with thingData? >> >> Gerriet. >> > > > well [ aThing release ] won’t work in ARC, I assume you really mean aThing = > nil, or just letting aThing fall out of the bottom of the local scope I meant: this was the code before I converted to Arc.
> either mark [ Thing data ] with NS_RETURNS_INNER_POINTER which is equivalent > to __attribute__((objc_returns_inner_pointer)) I did this, and now the app behaves again as it did before converting to Arc. No more data mutating behind my back and other strange effects. Thanks a lot! The only mention of this, which Xcode could find for me, was: Foundation Release Notes for OS X v10.8 and Earlier. Is there any other documentation (e.g. with a list of all __attribute__s and their respective meaning)? > or mark aThing with __attribute__((objc_precise_lifetime)) I think that NS_RETURNS_INNER_POINTER is more self explaining. Kind regards, Gerriet. _______________________________________________ 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