我如何在UIViewController属性中使用willSet



我在试着玩一下swift和iOS 8。

问题是,我试图在视图控制器中创建这个setter:
- (void)setViewController:(UIViewController *)viewController
{
    _viewController = viewController;
    method do something
}

下面的代码是在Objective-C中,所以我想在swift中创建它。

我想,我应该使用willSet,但我知道如果它是定义的当你有自己的变量时,我怎么定义willSet方法如果那个属性是ViewController属性

谢谢

像这样:

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中使用了很多)。

最新更新