Swift中的内存管理

2019-06-30  本文已影响0人  盖小聂

1、内存管理,weak和unowned
2、@autoreleasepool
3、C 指针内存管理

1、内存管理,weak和unowned
lazy var printName: () —> () = {    
 [weak self] in    
 if let strongSelf = self {        
   print(“The name is \(strongSelf.name)”)    
 }
} 
//self持有闭包,闭包又持有self,循环引用。
//为了解决这种闭包内的循环引用,我们需要在闭包开始的时候添加一个标注,
//来表示这个闭包内的某些要素应该以何种特定的方式来使用,比如像这里的[weak self]。
{ [unowned self, weak someObject] (number: Int) —> Bool in     
  //……    return true
}
2、@autoreleasepool
autoreleasepool {    
//dataWithContentsOfFile返回的autorelease对象。
//在Swift中更提倡的是用初始化方法而不是用像上面那样的类方法来生成对象,
//而且从Swift 1.1开始,因为加入了可以返回nil的初始化方法,
//像上面例子中那样的工厂方法都已经从API中删除了。
  let data = NSData.dataWithContentsOfFile(path, options: nil, error: nil) 
}
//使用初始化方法的话,我们就不需要面临自动释放的问题了,
//每次在超过作用域后,自动内存管理都将为我们处理好内存相关的事情。
let data = NSData(contentsOfFile: path)
3、C 指针内存管理
上一篇下一篇

猜你喜欢

热点阅读