簡體   English   中英

如何在UIViewController屬性中使用willSet

[英]How can I use willSet in a UIViewController property

我正在嘗試使用Swift和iOS 8玩一些游戲。

問題是,我正在嘗試在視圖控制器中創建此setter:

- (void)setViewController:(UIViewController *)viewController
{
    _viewController = viewController;
    method do something
}

下面的代碼在Objective-C中,因此我想快速創建它。

我認為,我應該使用willSet,但是我知道如果在擁有自己的變量時定義了willSet方法,如果該屬性是ViewController屬性,那么我將如何定義willSet方法。

謝謝

像這樣:

var viewController: UIViewController? {
    willSet {
        //method to do something
    }
}

如果需要在方法調用中使用變量“ newValue”,則實際上可以訪問將設置為哪個viewController。

注意:我在此處將屬性設為可選,只是為了擺脫有關需要初始化的編譯器警告

與@Eric的答案不同的另一種方法是使用計算屬性,該屬性更接近於模仿Objective-C的屬性,包括定義偽私有數據成員和實現getter和setter的計算屬性:

class MyClass {
    var _viewController: UIViewController?

    var viewController : UIViewController? {
        get {
            return self._viewController
        }

        set {
            self._viewController = newValue
            // Do something else
        }
    }
}

我定義了屬性偽私有,因為swift還沒有訪問修飾符,所以一切都是公開的-但是當我看到下划線在變量或屬性名稱前加上前綴時,對我來說就意味着私有(按照慣例,我使用很多在javascript中)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM