我是 objective-c 的新手,我知道基本的内存管理规则,比如什么时候 retain
release
autorelease
。但是我不知道什么时候应该将我的代码包装到自动释放池中,为什么?
最佳答案
与其他性能优化一样,如果您注意到高内存使用率和分析(例如使用 Instruments)导致您将额外的自动释放池作为解决方案,您通常应该只向您的代码添加额外的自动释放池。
也就是说,您可以将创建大量临时对象的代码包装在自动释放池中的紧密循环中。默认的自动释放池在运行循环周期结束时被耗尽。因此,如果您在代码中的 for 循环的每次迭代中创建大量临时对象,默认的自动释放池将不会被耗尽,直到您的整个循环运行完毕,这意味着您创建的所有临时对象可以加起来临时内存使用率高(有时称为“高水位线”)。您可以将循环的每次迭代包装在 @autoreleasepool
中,以便更快地释放在该循环迭代中创建的不需要的、自动释放的临时对象。
关于iphone - 我什么时候应该将我的代码包装到自动释放池中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10573387/