Swift懒加载lazy属性手动释放注意事项

作者: 9ad91f89b29e | 来源:发表于2016-07-31 00:37 被阅读1404次

Swift中懒加载如下

lazy var loadArray:NSMutableArray? = {
  let array = NSMutableArray()
  return array
}()

如果你在viewDidDisappeare中使得loadArray = nil

func viewDidDisappear(animated: Bool) {
  self.loadArray = nil
}```
如果你的ViewController是Push到另一个ViewController,然后又push回来,此时你的ViewController并没有release掉,当你再次使用loadArray时就是nil!!!!因为它不会判断loadArray为nil时重新加载,这是需要注意的,也就是说

**如果你用懒加载添加了一个属性,如果要主动释放该属性,使该属性=nil,这样是不行的,除非你在viewdidLoad中重新加载,这样一来就重复了,所以如果你要主动释放一些属性,那么这些属性就最好不要用lazy,如果你释放了这些属性但是VC并没有release掉的话,lazy属性不会重新加载**

然而,在OC中是这样做的
  • (NSMultableArray *)loadArray {
    if(!_loadArray){
    _loadArray = [NSMultableArray new];
    }
    return _loadArray;
    }```
    如果loadArray为nil的话会重新加载!!!
    用Swift虽然简洁,但是很多地方用起来,你都不知道哪里错了,特别是在对nil这个东西的处理上,需要非常注意

相关文章

  • Swift懒加载lazy属性手动释放注意事项

    Swift中懒加载如下 如果你在viewDidDisappeare中使得loadArray = nil (NSMu...

  • Swift: lazy 属性的写法

    序言:OC中有懒加载,Swift中用lazy关键字声明属性,也可以实现懒加载。lazy所修饰的属性只有第一次访问时...

  • Swift:)懒加载Lazy

    OC中,要实现懒加载是用到getter方法,例如 Swift懒加载差别就很大了,懒加载属性用lazy修饰,注意结尾...

  • swift3.0 - 懒加载

    和OC不同的是swift有专门的关键字来实现懒加载 lazy关键字可以用于定义某一个属性懒加载 格式: lazy ...

  • swift —— tips swift 中的懒加载实现

    objc objc 对象的懒加载 swift swift 的懒加载 方式 1lazy 保证数据在用到的时候才会被加...

  • Swift总结4:UI控件 单例 代理 懒加载 网络请求 闭包

    //懒加载//swift中固定写法lazy var l:UILabel = { //viewDidLoad中vie...

  • swift学习09(懒加载)

    swift中是通过专门的关键字(lazy)来实现懒加载; 一、直接懒加载赋值 二、懒加载赋一个函数 三、懒加载赋一...

  • lazy

    swift中是通过专门的关键字(lazy)来实现懒加载; 直接懒加载赋值 懒加载赋一个函数 懒加载赋一个闭包 1、...

  • Swift 懒加载Lazy

    对于很多人非常熟悉OC中的懒加载,并且已经达到炉火纯青。 但是在Swift兴风作浪的年代,你好意思不掌握Swift...

  • Swift 懒加载(lazy)

    在做OC项目中经常使用的就是懒加载,重写getter方法, 什么时候用到getter方法什么时候去加载, 并且就加...

网友评论

    本文标题:Swift懒加载lazy属性手动释放注意事项

    本文链接:https://www.haomeiwen.com/subject/qomtsttx.html