我不确定何时是RELEASE侦听器对象的正确时机。
我有一个对象A,它使用NSURLConnection的initWithRequest方法来检索一些URL。 initWithRequest需要一个委托在dataReceived事件之后监听... 因此,对象A创建一个对象B并将其作为initWithRequest方法的委托传递。
当从网络检索数据时,调用对象B的方法。 在对象B完成其工作后谁有责任释放对象B?!?
TO SUMMARIZE:
对象A创建对象B并使其成为某个事件的侦听器。 事件发生,对象B完成其工作。 在对象B完成其有责任释放它的工作之后?!?
请注意 关于如何在Objective-C中删除Observers有很多问题和答案。 无论如何,我发现他们认为你正在使用KVO模式。
答案 0 :(得分:1)
您是否尝试过在“完成接收数据”方法中释放对象B?这似乎是其使用寿命的终点。或者,您可以在对象A中维护对它的引用,然后在对象A的dealloc方法中释放它。
答案 1 :(得分:0)
连接保留委托。它 连接时释放委托 完成加载,失败或是 取消。
NSURLConnection在这方面是一个例外 - 大多数对象都不会保留其代理。
因此,在这种情况下,如果 A 希望继续使用B,则对象A应该保留对象B,在这种情况下,它应该在完成时释放它; NSURLConnection将负责自己使用B。