我有一个Objective-C类,它发出HTTP请求,并在收到响应后调用其委托上的方法。该类围绕我的应用程序的内置NSURLRequest提供了一些方便的方法。
我的问题是:我如何确保释放这个对象?通常,对象的所有者负责确保对象被释放。在这种情况下,没有明显的所有者。我想创建这个类的一个实例,设置它的委托,发出HTTP请求,然后忘记它(我可能会发出几个这样的请求,所以给它一个所有者的唯一方法是在调用对象中保留一个request对象的列表,这似乎不是最好的)。
我考虑过的一种方法是:当HTTP响应传入时,我的对象调用它的委托,然后进行自我释放。问题是所有的客户端都必须记住不要释放这个实例(否则我的对象需要在返回给用户之前调用retain )。
有人有什么好的模式吗?
发布于 2010-10-28 20:47:13
苹果公司已经想到了这个模式。假设您使用的是NSURLConnection,请查看-initWithRequest:delegate:的文档,这里是关于委托参数的说明:
连接保留委派。当连接完成加载、失败或取消时,它会释放委托。
我的重点
因此,在创建连接时,请将对象设置为代理。它不会消失,直到连接因为任何原因而终止,即使您的其他对象都不保留所有权。
顺便说一句,这个语句
没有明确的所有者
是假的。你说你的对象有一个委托。委托方显然是所有者的候选人。
https://stackoverflow.com/questions/4041943
复制相似问题