使用Xcode6Beta5协议和委托并不像第一个那样工作。在self.delegate时没有调用printCar()?.printCar()它被调用。我现在如何使用protocol&delegate?
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")
}
}
最佳答案
您没有设置汽车的delegate
属性,因此没有要调用的对象。
另外,在Swift中使用类型名称的首字母大写也是一种惯例。(您会注意到,这是一个非常强的约定,甚至连highlighter的语法都希望如此。)
顺便说一句,这与这个问题无关,但您现在可能希望使用Xcode6Beta6。
另一个无关的问题是:您的汽车类的printCar()
属性可能应该标记为delegate
。否则,如果汽车的代理是拥有汽车的对象,则会出现内存泄漏。
关于ios - Swift中的协议(protocol)声明-Xcode 6 beta 5,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25432683/