我正在开发一个应用程序,你可以在地图上放置引脚,然后查看与此位置相关的Flickr图像。
该应用程序几乎正常工作但我在某些类中遇到了初始化程序的问题。一个具体的例子是:
override init() {
session = NSURLSession.sharedSession()
super.init()
}
convenience init(delegate:HTTPClientProtocol) {
self.init()
self.delegate = delegate
}
有人可以帮我弄清楚这段代码有什么问题吗?在第一行,错误消息显示
初始化程序不会覆盖指定的初始值设定项 超
并且在self.init()
的行上,错误是
类型' - > '的值没有成员'init'
答案 0 :(得分:2)
如果您继承自NSObject
,那么您的override init
有效,因为您覆盖了NSObject
的基本初始值设定项:
protocol HTTPClientProtocol { }
class NSObj: NSObject {
var session: NSURLSession!
var delegate: HTTPClientProtocol?
override init() {
session = NSURLSession.sharedSession()
super.init()
}
convenience init(delegate:HTTPClientProtocol) {
self.init()
self.delegate = delegate
}
}
如果您的类是不从任何其他类继承的基类,则您的override init
将无效,因为您没有要覆盖的基类初始化程序。只需创建一个初始化程序和一个便利初始化程序,它可以调用刚创建的指定初始化程序:
protocol HTTPClientProtocol { }
class Obj {
var session: NSURLSession!
var delegate: HTTPClientProtocol?
init() {
session = NSURLSession.sharedSession()
}
convenience init(delegate:HTTPClientProtocol) {
self.init()
self.delegate = delegate
}
}