美文网首页Swift 专栏
14.懒加载和getter,setter

14.懒加载和getter,setter

作者: IIronMan | 来源:发表于2017-05-16 23:21 被阅读72次
  • 1.懒加载的介绍

    • swift中也有懒加载的方式
      (苹果的设计思想:希望所有的对象在使用时才真正加载到内存中)
    • 和OC不同的是swift有专门的关键字来实现懒加载
    • lazy关键字可以用于定义某一个属性懒加载
  • 2.懒加载的使用

    • 格式
      lazy var 变量: 类型 = { 创建变量代码 }()

    • 懒加载的使用

    • 懒加载的本质是,在第一次使用的时候执行闭包,将闭包的返回值赋值给属性

    • lazy的作用是只会赋值一次

       lazy var datalist:[String] = {
             ()->[String]
             in
      
             print("搞他")
             return ["1","2","3"]  
       }()
      
  • 3.getter与setter

      import UIKit
    
      class Person: NSObject {
    
      // 在企业开发中不建议这样写
      var _name : String?
      var name : String?{
    
      get{
      
       return _name
      
      }
      // 只要外界给通过对象,name给name赋值,那么就会保存在newValue
      set{
      
          _name = newValue
      
        }
    
      }
    
      //  只读的 ?可以不要
      var gender : String?{
      // 设置完值之后调用
      // Swift中使用didSet来替代OC中重写setter方法
      didSet{
          
          print(gender!)
        }
      
     }
     // 如果只重写了get方法,那么这个属性我们称之为 计算型 属性
     // 也就是对应OC中的只读属性
     // 注意点:计算型属性是不占用内存空间的
     var age : Int{
    
      get{
      
             return 30
      
        }
    
      }  
    }
    

调用

   import UIKit

   class ViewController: UIViewController {

   override func viewDidLoad() {
        super.viewDidLoad()
   
    // 在swift中,如果想使用某一个类,是不用导入头文件的
    // 因为Swift 中新增了一个OC中以前没有的概念 “命名空间”
    // 只要是在一个命名空间下的资源都是共享的
    // 默认情况下,项目名称就是命名空间
    
    // 正式因为这样,所以在做swift开发中有很多的坑
    // 如果是swift项目要使用第三方框架,那么建议使用cocopods来集成框架
    // 因为如果是通过cocopods集成的框架,在另外一个项目中,那么命名空间就不一样
    // 这样可以有效地避免三方中的类 和 我们自己的冲突
    let person = Person()
    
    person.gender = "jk"
    
    print(person.age)
    
    
    
    }

  }

相关文章

网友评论

    本文标题:14.懒加载和getter,setter

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