在为iPhone编程时,我对自动释放池有点困惑。我已经阅读了很多内容,从“不使用”到“使用没问题”,我认为这些反对。
我的具体问题是,我希望有一个封装SQLite3 Access的类,所以我有以下方法:
-(User*)fetchUserWithId:(NSInteger)userId
现在,在此方法中,SQL查询已完成,并使用数据库中的数据创建新的用户对象,然后返回。在这个DB Access类中,我不再需要这个对象,所以我可以做一个发布,但由于调用方法需要它,我会自动发布,不是吗?
那么,在这里使用自动释放是否可以?如果这种方法被频繁调用,它会获得太多内存吗?一些网站说,自动释放池首先在应用程序结束时释放,有人说,在每个事件(例如用户触摸某些东西)时。
如果我不应该使用自动释放,我怎样才能确保对象被正确释放?我可以在fetch方法中做一个发布,希望对象仍然存在,直到调用方法可以保留吗?
感谢您的帮助!
此致 的Matthias
答案 0 :(得分:1)
你必须永远不要发布你仍在使用的东西;或者你要回到某人那里使用它们。自动释放在iPhone上是完全有效的方法,并且自动释放池在运行循环的每次迭代结束时耗尽(基本上,对于每个事件)。