我在试着玩一下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中使用了很多)。