码迷,mamicode.com
首页 > 其他好文 > 详细

Stored Properties 与 Computed Properties

时间:2015-09-30 20:51:28      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:

Stored Properties 与 Computed Properties

技术分享

About Swift

 

Stored Properties

In its simplest form, a stored property is a constant or variable that is stored as part of an instance of a particular class or structure. Stored properties can be either variable stored properties (introduced by the varkeyword) or constant stored properties (introduced by the let keyword).

You can provide a default value for a stored property as part of its definition, as described in Default Property Values. You can also set and modify the initial value for a stored property during initialization. This is true even for constant stored properties, as described in Assigning Constant Properties During Initialization.

 

Computed Properties

In addition to stored properties, classes, structures, and enumerations can define computed properties, which do not actually store a value. Instead, they provide a getter and an optional setter to retrieve and set other properties and values indirectly.

 

技术分享

 

细节

computed properties 本质上只是一个setter,getter方法,但在使用上却跟使用 stored properties 时效果一致, 所以,我们可以将 computed properties 理解为方法.

技术分享

两者的一些区别

技术分享 

以及使用心得

技术分享

 

源码

//
//  Model.swift
//  ModelDemo
//
//  Created by YouXianMing on 15/9/30.
//  Copyright © 2015年 ZiPeiYi. All rights reserved.
//

import UIKit

class Model: NSObject {
        
    // MARK: Stored Properties
    
    private  var cellFlag   : String?
    private  var cellHeight : CGFloat?
    internal var data       : AnyObject?
    
    // MARK: Computed Properties
    
    var rowHeight : CGFloat {
        
        get {
            
            if let _ = cellHeight {
                
                return cellHeight!
                
            } else {
                
                return 40
            }
        }
        
        set(newVal) {
            
            cellHeight = newVal
        }
    }
    
    var reusableCellIdentifier : String {
        
        get {
            
            if let _ = cellFlag {
                
                return cellFlag!
                
            } else {
                
                return "reusableCellIdentifier"
            }
        }
        
        set(newVal) {
            
            cellFlag = newVal
        }
    }
    
    // MARK: Method
    override init() {
        
        super.init()
    }
    
    init(reusableCellIdentifier : String, rowHeight : CGFloat, data : AnyObject?) {
        
        super.init()
        
        self.reusableCellIdentifier = reusableCellIdentifier
        self.rowHeight              = rowHeight
        self.data                   = data
    }
}
//
//  ViewController.swift
//  ModelDemo
//
//  Created by YouXianMing on 15/9/30.
//  Copyright © 2015年 ZiPeiYi. All rights reserved.
//

import UIKit

class ViewController: UIViewController {
    
    override func viewDidLoad() {
        
        super.viewDidLoad()
        
        let model1 = Model()
        print(model1.rowHeight)
        print(model1.reusableCellIdentifier)
        print(model1.data)
        
        let model2 = Model(reusableCellIdentifier: "cellTypeOne", rowHeight: 20, data: nil)
        print(model2.rowHeight)
        print(model2.reusableCellIdentifier)
        print(model2.data)
    }
}

 

Stored Properties 与 Computed Properties

标签:

原文地址:http://www.cnblogs.com/YouXianMing/p/4849201.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!