2017-05-19 102 views
1

我正在看一些自動佈局庫的代碼。在這裏面,有一個由UIView的採用了協議:在協議的屬性聲明中,「get」是什麼意思?

extension UIView: Constrainable {} 
extension UILayoutGuide: Constrainable { 
    // LayoutGuide doesn't have baseline anchors, so just use the bottom anchor 
    public var firstBaselineAnchor: NSLayoutYAxisAnchor { 
     return bottomAnchor 
    } 
    public var lastBaselineAnchor: NSLayoutYAxisAnchor { 
     return bottomAnchor 
    } 
} 

public protocol Constrainable { 
    var topAnchor:  NSLayoutYAxisAnchor { get } 
    var bottomAnchor: NSLayoutYAxisAnchor { get } 
    var leftAnchor:  NSLayoutXAxisAnchor { get } 
    var rightAnchor: NSLayoutXAxisAnchor { get } 
    var leadingAnchor: NSLayoutXAxisAnchor { get } 
    var trailingAnchor: NSLayoutXAxisAnchor { get } 

    var centerXAnchor: NSLayoutXAxisAnchor { get } 
    var centerYAnchor: NSLayoutYAxisAnchor { get } 

    var widthAnchor: NSLayoutDimension { get } 
    var heightAnchor: NSLayoutDimension { get } 

    var firstBaselineAnchor : NSLayoutYAxisAnchor { get } 
    var lastBaselineAnchor : NSLayoutYAxisAnchor { get } 
} 

什麼是空{ get }完成?

+1

你在說什麼空吸? –

+1

請參閱[Swift編程語言:協議]中的「屬性要求」(https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Protocols.html#//apple_ref/doc/uid/) TP40014097-CH25-ID267)。 – Rob

+0

[Swift中協議的只讀屬性]的可能重複(http://stackoverflow.com/questions/31358518/read-only-properties-of-protocols-in-swift) –

回答

1

這些是採用協議的類必須提供getter的屬性。該協議沒有指定關於setter的任何信息,所以類可以提供一個計算的屬性而不是存儲的屬性。

例如,採用Constrainable一類可以通過添加

var topAnchor: NSLayoutYAxisAnchor 

或滿足其topAnchor的要求加入

var topAnchor: NSLayoutYAxisAnchor { 
    ... 
    return ... 
} 
相關問題