我正在开发一个应用程序,您可以在其中将图钉放在地图上并查看与此位置相关的Flickr图像。
该应用程序几乎可以正常工作,但是我在某些类中的初始值设定项中遇到了问题。一个具体的例子如下:
override init() {
session = NSURLSession.sharedSession()
super.init()
}
convenience init(delegate:HTTPClientProtocol) {
self.init()
self.delegate = delegate
}
有人可以帮我弄清楚这段代码有什么问题吗?在第一行,错误消息显示
初始值设定项不会从其 超类
并且在与self.init()
的线上错误是
类型为"->"的值没有成员"init"
如果你从 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
将不起作用,因为您没有要重写的基类初始值设定项。 只需创建一个初始值设定项和一个方便的 init,即可调用您刚刚创建的指定初始值设定项:
protocol HTTPClientProtocol { }
class Obj {
var session: NSURLSession!
var delegate: HTTPClientProtocol?
init() {
session = NSURLSession.sharedSession()
}
convenience init(delegate:HTTPClientProtocol) {
self.init()
self.delegate = delegate
}
}