美文网首页
swift-属性&方法

swift-属性&方法

作者: malgee | 来源:发表于2018-03-27 14:53 被阅读13次

计算性属性:自身值的改变需要计算的,可以使用计算性属性定义

struct Point {
    
    var X: Double = 0.0
    var Y: Double = 0.0
}

struct Size {
    
    var width: Double = 0.0
    var height: Double = 0.0
}

class Rectangle {
    
    var origin = Point()
    var size = Size()
    
    // 计算性属性
    var point: Point{
        
        return Point(X: origin.X + size.width * 0.5, Y: origin.Y + size.height * 0.5)
    }
    
    // 计算性属性
    var point2: Point{
        
        // getter 方法
        get {
        
            return Point(X: origin.X + size.width * 0.5, Y: origin.Y + size.height * 0.5)
        }
        
        // setter 方法 能够修改属性值, 下面有 2 种写法
        /*
        set(newOrigin){
            
            origin.X = newOrigin.X - size.width / 2
            
            origin.Y = newOrigin.Y - size.height / 2
        }
        */
        set{

            origin.X = newValue.X - size.width / 2

            origin.Y = newValue.Y - size.height / 2
        }
    }
    
    init(origin: Point, size: Size) {
        
        self.origin = origin

        self.size = size
    }
    
}

let newRect = Rectangle(origin: Point(X: 2, Y: 10), size: Size(width: 10, height: 10))

newRect

属性观察器

  // 计算性属性
    var number: Double = 0 {
        
        /** willSet, didSet 方法不会在初始化(init)的时候调用, 被称为属性观察器 */
        willSet{
             /** 这里面可以做一些逻辑判断 */
        }
        
        didSet{
            
            /** 这里面可以做一些逻辑判断 */
        }

---
---
  var number = 0 {
        
        willSet {
            
            
        }
        
        didSet {
            
        }
    }

懒加载属性

懒加载属性只能被 `var` 修饰

class Book
{
    var name: String
    var content: String
    
    // 懒加载 注意,必须使用var 修饰  ()表示调用闭包
    lazy var page: Int = {
        
        print("sdfdfs")
        
       var pages = 0
        for value in 0...10000 {
            
            pages += value * 10
        }
        return pages
    }()

    init?(name: String?, content: String?) {
        
        if name?.count == 0, content?.count == 0 {
            
            return nil
        }
        
        self.name = name!
        
        self.content = content!

    }
}

if let myBook = Book(name: "XXXXXX", content:"MMMM") {
    
    myBook
    
    myBook.name
    
    myBook.content
    
    myBook.page
}

相关文章

  • swift-属性&方法

    计算性属性:自身值的改变需要计算的,可以使用计算性属性定义 属性观察器 懒加载属性

  • swift-类属性

    了解属性之前,需要先了解前面的swift-类结构内容 - swift-类结构源码探寻[https://www.ji...

  • Swift-属性和方法

    计算型属性 类型属性(全局属性) 类型方法(全局方法) 属性观察器

  • SVProgressHUD属性&方法

    安装 1.通过Cocoapods安装pod 'SVProgressHUD'2.手动安装注意把 SVProgress...

  • Swift属性观察方法willSet和didSet

    Swift-属性观察着(willSet和didSet) 属性观察者,类似于触发器.用来监视属性的除了初始化之外的属...

  • 浅谈swift中的属性观察者

    Swift-属性观察者(willSet和didSet) 属性观察者,类似于触发器.用来监视属性的除了初始化之外的属...

  • 网页设计 - 收藏集 - 掘金

    免费且又精致的 HTML/CSS 站点模板 - 前端 - 掘金&l...

  • DTD

    一、声明 内部DOCTYPE 外部DOCTYPE 二、XML结构 元素 属性 实体< > &...

  • Swift-属性

    存储属性 在其最简单的形式中,存储属性是作为特定类或结构的实例的一部分存储的常量或变量。 存储的属性可以是变量存储...

  • Swift-属性

    属性 存储属性(Stored Property)类似于成员变量这个概念存储在实例的内存中结构体,类可以定义存储属性...

网友评论

      本文标题:swift-属性&方法

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