【发布时间】:2018-08-08 22:25:43
【问题描述】:
我目前在 open var deviceIdentifier: String? 类中有一个变量,我想弃用 setter,只将它变成 open private(set) var deviceIdentifier: String?
有没有办法做到这一点?我试图把这两行都放进去,但这显然是 Xcode 不喜欢的冲突。
@available(*, deprecated)
open var deviceIdentifier: String?
open private(set) var deviceIdentifier: String?
如果我将其更改为计算变量,编译器会很高兴,但我想避免这种情况。这是唯一的方法吗?这会按预期工作吗?
private var _deviceIdentifier: String?
open var deviceIdentifier: String? {
get {
return _deviceIdentifier
}
@available(*, deprecated)
set(newValue){
}
}
【问题讨论】:
-
+1 我也想知道是否有解决方案 我快速浏览了一下,找不到任何东西,但它的优先级很低,所以我没有花太多时间它。
-
如果set-only computed properties 成为可能,那么可以想象
get和set声明可以拆分,只允许弃用其中一个。 -
我认为您的解决方案是使用计算属性。目前最好。一旦我想删除 setter,您就可以将 setter 设为私有。
-
@leogdion 我刚刚测试了计算属性并添加了
@available注释确实在 Xcode 10 中提供了编译器警告,但在 Xcode 9 中没有。继续前进。
标签: swift model deprecated