Open simonbromberg opened 8 years ago
GDCoreDataConcurrencyDebugging does a bunch of hackery to get its job done. The autorelease tracking works by retaining objects that are sent autorelease
messages and keeping track of the stacktrace for the original callstack where autorelease
was sent.
So if you have code that looks like:
GDCoreDataConcurrencyDebuggingBeginTrackingAutorelease();
[myTaggedPointerStringCStringContainer autorelease]; // I don't actually know what this class is, but it's probably something internal to Apple.
GDCoreDataConcurrencyDebuggingEndTrackingAutorelease();
then when autorelease
is called on myTaggedPointerStringCStringContainer
, it will be sent a retain
message.
So the upshot is feel free to ignore this, but there are a couple of steps that could be taken to avoid this:
Both of these require changes to - (id)gd_autorelease
at the bottom of GDConcurrencyCheckingManagedObject
. Feel free to submit a PR for this.
If I call GDCoreDataConcurrencyDebuggingBeginTrackingAutorelease(), I get many logs saying
*\ -[NSTaggedPointerStringCStringContainer retain] called, not supposed to happen
Any idea what this means, how to fix it, and if it is a problem what is the effect? Can't even find where this message is called in the library.
Thanks