Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.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 如何在swift中管理内存?_Ios_Iphone_Memory Management_Swift2 - Fatal编程技术网

Ios 如何在swift中管理内存?

Ios 如何在swift中管理内存?,ios,iphone,memory-management,swift2,Ios,Iphone,Memory Management,Swift2,我已将iPod库导入mediaQuery变量 var mediaQuery = MPMediaQuery! 进行查询后,将加载库 override func didReceiveMemoryWarning() { super.didReceiveMemoryWaring() mediaQuery = nil } mediaQuery设置为零会减少内存使用吗 Swift有自己的垃圾收集器。将变量设置为nil将释放内存。此代码在Swift 2中不起作用,因为您使用指定对象必须存在在类型之后。代码

我已将
iPod
库导入
mediaQuery
变量

var mediaQuery = MPMediaQuery!
进行查询后,将加载库

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWaring()
mediaQuery = nil }

mediaQuery
设置为零会减少内存使用吗

Swift有自己的垃圾收集器。将变量设置为nil将释放内存。此代码在Swift 2中不起作用,因为您使用
指定对象必须存在在类型之后。代码应如下所示:

var mediaquery: MPMediaQuery?

override func didReceiveMemoryWarning() {
  super.didReceiveMemoryWaring()
  mediaquery = nil
}

但它没有给我任何错误或警告。我用了MPMediaQuery!我把它赋值为nil,它没有给我任何错误。自动引用计数或ARC,是一种垃圾收集形式,在这种形式中,一旦不再有对对象的引用,对象就会被释放。ARC下的每个对象都包含一个引用计数器,作为内存中的一个额外字段存储,每次为该对象设置变量时,该计数器都会递增,每次将该对象的引用设置为nil/null或引用超出范围时,只要引用计数器降到零,该计数器就会递减,对象负责删除自身,调用析构函数并释放分配的内存。让我们来看看,ARC不是一种垃圾收集器。Kristina询问将mediaQuery设置为nil是否会减少内存使用。答案是否定的。将隐式unwrapped optional设置为nil不会取消分配任何内存,也不会给她任何错误。如果在那之后她将使用对mediaQuery的引用来查找某些内容,那么程序就会崩溃。。。