我有一个对象,它充当我的视图控制器和我的webservice之间的连接层。此对象接受委托,并在从服务器返回数据时通知该委托。我遇到了一个问题,其中委托在http请求运行时被dealloc'd。当请求返回时,我的对象尝试在委托上调用方法,并且应用程序崩溃。
处理此问题的最佳方法是什么。我已经在几个地方读过你不应该保留你的代表,因为他们经常保留这个对象,导致循环依赖。因此,如果我不能保留我的委托,在调用方法之前如何检查它是否已经被解除了?
@property (nonatomic, assign) NSObject<ServerConnectionDelegate>* delegate;
答案 0 :(得分:3)
如果委托的生命周期长于worker对象的生命周期,通常应该使用委托模式。 (抱歉不确定这里的正确用语)。
您有多种方法可以解决这个问题:
答案 1 :(得分:0)
您应该取消任何正在运行的请求,并在dealloc方法中将其委托设置为nil。
- (void)dealloc
{
[yourWebServiceRequest cancelRequestAndClearDelegate];
[super dealloc];
}