Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.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
Ios 如何在ARC中显式调用垃圾收集器?还有什么方法可以决定何时释放ARC中的内存?_Ios_Ios5_Memory Management_Memory Leaks_Automatic Ref Counting - Fatal编程技术网

Ios 如何在ARC中显式调用垃圾收集器?还有什么方法可以决定何时释放ARC中的内存?

Ios 如何在ARC中显式调用垃圾收集器?还有什么方法可以决定何时释放ARC中的内存?,ios,ios5,memory-management,memory-leaks,automatic-ref-counting,Ios,Ios5,Memory Management,Memory Leaks,Automatic Ref Counting,我是一名iPhone开发者。我在应用程序中使用ARC。我正在分配对象,一旦它的使用结束,我就给它分配“nil”。为了释放内存,我还需要做什么 还有一种方法,我们可以在ARC中显式地调用垃圾收集器吗?还有一种方法可以决定何时释放ARC中的内存吗?ARC没有垃圾收集,因此没有可调用的内容。如果您控制对象的范围和所有权,ARC将为您管理内存使用 除了将“nil”分配给引用或让引用超出范围之外,唯一需要考虑的是您是否对对象有一些额外的引用(例如将其放入NSArray),这些引用本身就需要保留对象。ARC

我是一名iPhone开发者。我在应用程序中使用ARC。我正在分配对象,一旦它的使用结束,我就给它分配“nil”。为了释放内存,我还需要做什么


还有一种方法,我们可以在ARC中显式地调用垃圾收集器吗?还有一种方法可以决定何时释放ARC中的内存吗?

ARC没有垃圾收集,因此没有可调用的内容。如果您控制对象的范围和所有权,ARC将为您管理内存使用


除了将“nil”分配给引用或让引用超出范围之外,唯一需要考虑的是您是否对对象有一些额外的引用(例如将其放入NSArray),这些引用本身就需要保留对象。

ARC不是垃圾收集器--可以将其视为手动引用计数管理,编译器代表您添加引用计数操作

您可以做的一件好事是创建一个自动释放池。因为编译器添加了retain、release和AUTORELASE消息,所以对象最终会进入AUTORELASE池。考虑:

@autoreleasepool {
  ..create several temporary objects...
} // << now the autorelease pool is popped, and delayed release messages are sent
@autoreleasepool{
…创建几个临时对象。。。

}//我不是说这是你的错,而是。。“ARC不是垃圾收集器”,“ARC会处理你的垃圾”,“ARC没有垃圾收集功能”-我希望有人有更好的方法教初学者这些东西。@hooleyhoop-我不明白你想说什么。有了适当的定义和条件,其中两个是正确的陈述。“Arc会处理好你的垃圾”唯一的错误是Arc更多的是防止垃圾而不是处理垃圾。对不起,拖拉。我觉得这让人困惑,但我自己也做不到更好的事情(我很不满意这很难解释,不是因为我认为你做得很糟糕)。虽然这个答案中的每件事都是正确的,@justin's更完整。在某些情况下,需要使用
@autoreleasepool
块来防止失效对象在内存中累积(ARC最终将释放它们,但可能直到线程本身终止)。并非所有内容都会在离开作用域后立即发布,除非您的作用域恰好包含一个
@autoreleasepool
块。