> 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

Reply via email to