In my app I do a lot of network loading. My data model consists of "Loader" objects that do this loading and call their delegate when finished/failed. The delegates all conform to a "LoaderDelegate" protocol.

The issue I'm having is that sometimes seemingly random objects, not the delegate, are getting the delegate messages. This of course causes a crash because of an unrecognized selector.

Only one set of crash logs tell me which one of my loaders is having the issue, the others don't have that information, just the random object that got the message.

I'm stuck at how to determine the real cause of this issue.

One set of crash logs has a loader trying to call it's delegate but reaching `_UIImageViewExtendedStorage`. Another has a loader is reaching `__NSCFInputStream`. Another `__NSBlockVariable__`. And yet another, `CALayer`.

And that's just in my latest beta from 3 days ago.

It would be one thing if it was the same object each time, but it seems almost random. Is it possible that memory is getting overritten with a new object somehow? 

My delegate property for all of my loaders is an assign property, but the delegate is always alive when the loader finishes (delegates are my view controllers calling the loaders).