首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >没有所有者的Cocoa类的内存管理

没有所有者的Cocoa类的内存管理
EN

Stack Overflow用户
提问于 2010-10-28 18:29:53
回答 1查看 43关注 0票数 0

我有一个Objective-C类,它发出HTTP请求,并在收到响应后调用其委托上的方法。该类围绕我的应用程序的内置NSURLRequest提供了一些方便的方法。

我的问题是:我如何确保释放这个对象?通常,对象的所有者负责确保对象被释放。在这种情况下,没有明显的所有者。我想创建这个类的一个实例,设置它的委托,发出HTTP请求,然后忘记它(我可能会发出几个这样的请求,所以给它一个所有者的唯一方法是在调用对象中保留一个request对象的列表,这似乎不是最好的)。

我考虑过的一种方法是:当HTTP响应传入时,我的对象调用它的委托,然后进行自我释放。问题是所有的客户端都必须记住不要释放这个实例(否则我的对象需要在返回给用户之前调用retain )。

有人有什么好的模式吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-28 20:47:13

苹果公司已经想到了这个模式。假设您使用的是NSURLConnection,请查看-initWithRequest:delegate:的文档,这里是关于委托参数的说明:

连接保留委派。当连接完成加载、失败或取消时,它会释放委托。

我的重点

因此,在创建连接时,请将对象设置为代理。它不会消失,直到连接因为任何原因而终止,即使您的其他对象都不保留所有权。

顺便说一句,这个语句

没有明确的所有者

是假的。你说你的对象有一个委托。委托方显然是所有者的候选人。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4041943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档