> On 22 Oct 2014, at 03:17, Greg Parker <gpar...@apple.com> wrote: > > >> On Oct 21, 2014, at 2:44 AM, Gerriet M. Denkmann <gerr...@mdenkmann.de> >> wrote: >> >> 10.10, Xcode 6.1, using Arc. >> >> The following code works fine, with USE_INVOCATION defined or not: > > [...] > >> Without USE_INVOCATION defined, I get some compiler warning about potential >> leaks, because selector is unknown. >> >> But with USE_INVOCATION defined, it will crash later (when all has been >> done), obviously while cleaning an AutoreleasePool: > > [...] > >> Seems like Arc (or I) is somehow confused. >> >> Any help would be greatly appreciated. > > Start with the Allocations instrument. It will show you the retain/release > history of the dead object. > > (My guess is that the bug is the call to -getReturnValue:. That method simply > copies the return value's bytes into the destination variable, but ARC thinks > the destination variable stores a retained pointer. The Allocations > instrument should show that the returned object is the one that is used after > deallocation.)
I tried (with zombies on): [ invocation invoke ]; NSDictionary *a; [ invocation getReturnValue: &a ]; NSLog(@"%s got new %p",__FUNCTION__, a); Result: ... got new 0x6100004475c0 *** -[__NSDictionaryM release]: message sent to deallocated instance 0x6100004475c0 This seems to prove your guess that " the bug is the call to -getReturnValue:". But how to fix this? 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