调用委托方法,无法识别的select器,因为发送到错误的对象

在我的应用程序,我做了很多networking加载。 我的数据模型由“加载程序”对象组成,这些加载程序在完成/失败时调用它们的委托。 代表都符合“LoaderDelegate”协议。

我遇到的问题是,有时看似随机的对象,而不是委托,正在获取委托消息。 这当然会导致崩溃,因为无法识别的select器。

只有一套崩溃日志告诉我哪一个装载者有问题,其他人没有这个信息,只是那个得到消息的随机对象。

我被困在如何确定这个问题的真正原因。

一组崩溃日志有一个加载器试图调用它的委托,但达到_UIImageViewExtendedStorage 。 另外有一个loader正在到达__NSCFInputStream 。 另一个__NSBlockVariable__ 。 还有一个, CALayer

这只是我3天前的最新testing。

如果每次都是同一个对象,那将是一回事,但似乎是随机的。 内存是否有可能以某种方式被新对象覆盖?

我所有的加载器的委托属性是一个分配属性,但是当加载器完成时,委托总是处于活动状态(委托是我的视图控制器调用加载器)。

请张贴一些代码,导致很难排除故障。 请记住在dealloc中删除你的委托。

 - (void) dealloc { objectOfWhichIAmTheDelegate.delegate = nil; } 

你的代表应该是一个分配财产不保留 – 但这不是你的情况的问题。

 @property (assign) id<TheMightyDelegate> delegate; 

你应该做的另一件事是确保委托人响应你想发送给他的select器,然后再启动该方法。

 if ([delegate respondsToSelector:@selector(yourMethod)]) { [delegate performSelector:@selector(yourMethod)]; } 

希望这会给你的问题带来一些启示。 如果不是,请提供一些代码。

事实certificate,我得到了这个错误随机遍地,只是不在这个特定的类,而不仅仅是委托方法。

在我的情况下,问题原来是我正在访问多个线程中的各种类的属性,这些属性是非primefaces的。 由于我解决了(删除属性的非primefaces属性),我没有看到这种情况了。