您好我想问一下,当您使用需要先调用另一个方法的类方法时,是否有任何方法可以在编译时在xCode上出错?
我解释说:
class MyClass {
func initializeClass(){
}
func loadConfig() {
}
}
var myClass = MyClass()
myClass.loadConfig()
- >编码时丢失错误,与您未实现所需协议功能时的错误相同
正确的方式:
myClass.initializeClass().loadConfig()
答案 0 :(得分:3)
解决这种情况的一种方法是使用Proxy Design Pattern。不要将这两种方法都添加到MyClass
,而是loadConfig()
MyClassInitProxy
的实例方法:
public class MyClass {
public class MyClassInitProxy {
let owner:MyClass
public func loadConfig() {
// Do the config work using owner to access MyClass
}
private init(owner:MyClass) {
self.owner = owner
}
}
public func initializeClass() -> MyClassInitProxy {
// Do preparation, then
return MyClassInitProxy(owner:self)
}
}
现在,人们拨打loadConfig
的唯一方法是通过MyClassInitProxy
电话获取initializeClass()
:
var myClass = MyClass()
myClass.initializeClass().loadConfig()
答案 1 :(得分:0)
简短的回答是 - 不,使用这种方法你不会有编译时错误。
但是,如果您希望任何人在没有准备配置的情况下实例化您的类,那么只需要将配置作为初始化程序中的参数。 E.g。
class MyClass {
init(config: YourConfigType) {
// do something with the config parameter
}
}
... read config from somewhere and create config variable ...
let x = MyClass(config: config)
然后你有一个"编译时错误"每当有人想要使用你的类而没有最初的配置设置。