为什么以及何时需要在ios项目中使用@autoreleasepool

时间:2016-04-26 06:20:59

标签: ios objective-c memory-management automatic-ref-counting nsautoreleasepool

我已经阅读了很多关于@autorelease池的博客,但我仍然不清楚客观c或ios开发中的@autorelease池概念。

任何人都可以对这个概念有所了解。 如果任何人可以提供一个例子,并且需要使用@autorelease池,那将对我非常有帮助。

如何使用@autorelease池和没有它来测量内存分配。

请注意这个话题可能是重复的。

1 个答案:

答案 0 :(得分:-1)

发布和自动发布是与内存管理相关的术语。无论何时拥有一个物体,你都有责任释放它。如果你没有正确发布它,Objective -C不能回收它以使用其他对象,并且会有内存泄漏。

拥有对象的不同方式是alloc,new,retain和copy每当你使用这个东西时尝试释放它,所以Objective C会小心吹掉那个对象。如果您不确定是否要释放该物体,请确保自动释放。

每当你对某个对象进行自动释放时,对象就不会正确释放,它将被添加到main函数的Autoreleasepool中。 main函数中的Autoreleasepool将维护一堆要释放的对象,并在调用" drain"方法时逐个释放它们,例如:[pool drain]。在每个事件循环结束时重复调用Drain方法。