在阅读我当前项目的源代码时,我看到:
[self retain]在一个类的init方法中。
我不明白确切的原因。阅读苹果的内存管理规则,我没有看到任何关于这一点的东西,我也没有看到任何假设的[self release]。
发布于 2012-01-17 19:51:36
该对象在初始化时断言其自身的所有权。我认为这可能有用的唯一原因是,在某个事件发生之前,对象需要保证自己的存在。例如,它可能运行计时器,然后在计时器到期时释放自身。
如果它没有文档记录,也没有相应的版本,那么它很可能是一个bug。
发布于 2012-01-17 20:21:31
最好的猜测是,编写代码的人有一个保留错误,这是真正问题的“快速修复”。
发布于 2012-01-17 19:47:46
如果我没记错的话,有些类使用self-retain来避免未成熟的释放。我想说这不是最好的实践,但是如果你知道游戏规则(在这个例子中是Obj-C),你可以(有时)打破它们。
https://stackoverflow.com/questions/8894015
复制相似问题