使用Xcode 6、beta 5、协议和委托不像第一次那样工作。调用self.delegate?.printCar()时不调用printCar()。我现在如何使用协议和委托?
import UIKit
protocol communication{
func printCar()
}
class car{
var delegate:communication?
init(){}
func passCar(){
self.delegate?.printCar()
}
}
class ViewController: UIViewController,communication {
override func viewDidLoad() {
super.viewDidLoad()
println("start")
var bmw = car()
bmw.passCar()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func printCar(){
println("car")
}
}发布于 2014-08-21 17:51:24
您没有设置汽车的delegate属性,因此没有可以调用printCar()的对象。
此外,在Swift中对类型名使用初始大写是惯例。(您会注意到,这是一种非常强的约定,即便如此,语法高亮器也希望如此。)
顺便说一句,它与这个问题无关,但您现在可能希望使用Xcode 6 beta 6。
另一个不相关的问题:您的car类的delegate属性可能应该标记为weak。否则,如果汽车的委托是拥有该汽车的对象,则会出现内存泄漏。
https://stackoverflow.com/questions/25432683
复制相似问题