首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有[self retain]有效的情况?

有没有[self retain]有效的情况?
EN

Stack Overflow用户
提问于 2012-01-17 19:42:31
回答 6查看 120关注 0票数 3

在阅读我当前项目的源代码时,我看到:

代码语言:javascript
复制
[self retain]

在一个类的init方法中。

我不明白确切的原因。阅读苹果的内存管理规则,我没有看到任何关于这一点的东西,我也没有看到任何假设的[self release]

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-01-17 19:51:36

该对象在初始化时断言其自身的所有权。我认为这可能有用的唯一原因是,在某个事件发生之前,对象需要保证自己的存在。例如,它可能运行计时器,然后在计时器到期时释放自身。

如果它没有文档记录,也没有相应的版本,那么它很可能是一个bug。

票数 3
EN

Stack Overflow用户

发布于 2012-01-17 20:21:31

最好的猜测是,编写代码的人有一个保留错误,这是真正问题的“快速修复”。

票数 2
EN

Stack Overflow用户

发布于 2012-01-17 19:47:46

如果我没记错的话,有些类使用self-retain来避免未成熟的释放。我想说这不是最好的实践,但是如果你知道游戏规则(在这个例子中是Obj-C),你可以(有时)打破它们。

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

https://stackoverflow.com/questions/8894015

复制
相关文章

相似问题

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