在将一些项目从Objective-C迁移到Swift时,我发现自己用更多的样板代码替换@property
/ @synthesize
语法。
例如,对于我正在实施的每个@property
,我目前使用此模式:
var foo: Foo? {
get {
return _foo
}
set {
_foo = newValue
}
}
var _foo: Foo?
最终快速添加。将其与Objective-C中的2行进行比较。这感觉不对。
我是否应该使用_foo
在我的移植类中使用foo
替换代码,并完全跳过接口后面的每个public var
的抽象?
答案 0 :(得分:2)
正如@ Amit89指出的那样,你可以简单地使用_foo
在您的示例中,添加foo
完全没有做任何事情,因为您只是重新创建了get
已提供的set
和_foo
功能。
如果要控制_foo
的设置方式,可以使用属性观察器:
var _foo: Foo? {
didSet { }
willSet { }
}
如果您想控制_foo
的检索方式,那么创建private
版_foo
,然后通过计算属性访问它确实有意义:
private var _foo: Foo?
var foo: Foo? {
get {
// return `_foo` in some special way
}
// add a setter if you want to set `_foo` in some special way
}