Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我应该在iPhone操作系统中耗尽还是释放自动释放池?_Iphone_Memory Management_Uikit_Autorelease - Fatal编程技术网

我应该在iPhone操作系统中耗尽还是释放自动释放池?

我应该在iPhone操作系统中耗尽还是释放自动释放池?,iphone,memory-management,uikit,autorelease,Iphone,Memory Management,Uikit,Autorelease,医生说: 在垃圾收集的环境中, 向池发送排放消息 如果发生以下情况,则触发垃圾回收 必要的;然而,释放是一种挑战 参考文献中的no-op.计数 环境,排水也有同样的效果 作为释放。因此,通常情况下 应使用排水管,而不是释放 如果我做对了,他们说我应该一直使用-drain,不管周围是否有垃圾收集或引用计数。在iPhone上没有GC,所以不管怎样,我发送-drain 不幸的是,医生只谈到可可,而不是可可触摸或iPhone。因此,我不确定是否同样适用于那里。这并不重要,它们都有相同的效果。苹果公司建议

医生说:

在垃圾收集的环境中, 向池发送排放消息 如果发生以下情况,则触发垃圾回收 必要的;然而,释放是一种挑战 参考文献中的no-op.计数 环境,排水也有同样的效果 作为释放。因此,通常情况下 应使用排水管,而不是释放

如果我做对了,他们说我应该一直使用-drain,不管周围是否有垃圾收集或引用计数。在iPhone上没有GC,所以不管怎样,我发送-drain


不幸的是,医生只谈到可可,而不是可可触摸或iPhone。因此,我不确定是否同样适用于那里。

这并不重要,它们都有相同的效果。苹果公司建议在你移动到垃圾收集环境时使用drain(如果未来版本的iPhone SDK支持它,或者如果你将它复制到Mac OS X项目),所以我会这么做。

只发送-drain;如果在以后的某个日期,iPhone有GC,您将能够编译它,而无需修改。这是一个很好的习惯。

在正常开发中,不需要调用autorelease池上的drain-当您的方法返回时,它会这样做

例外情况是,如果您正在循环中创建许多自动释放的对象,并且您有机会提前释放其中一些对象


如果您调用drain作为释放的替换,它将不会释放尚未自动释放的对象。

谢谢。我有点奇怪,因为苹果在main()函数(main.m)中向ARP发送了一个-release。医生应该去看医生^_^