Swift中的协议就是我们通常所说的接口,它连接了软件和软件模块,非常重要。首先定义一个协议:
protocol CgProtocol {
}
协议也有基协议:
protocol CgProtocol : NSObjectProtocol {
}
协议是可以多继承的。
现在写一个协议方法,协议方法必须实现。比如我们写一个比较的方法
protocol CgProtocol : NSObjectProtocol {
func compare(value :Int) ->Bool
}
定义一个类,如果一个类要继承父类,又要遵守协议,那么父类应该放到协议之前,形式如下:
class 类名 : 父类, 协议1,协议2 {
//遵守协议的内容
}
如果接口继承了NSObjectProtocol,那么遵守这个协议的类就应该首先继承NSObejct类,因为按照接口中方法必须被实现的原则,NSObject中实现了NSObjectProtocol中的全部方法。我们实现在类ClassA中遵守接口CgProtocol中的方法:
protocol CgProtocol : NSObjectProtocol {
func compare(value : Int) ->Bool
}
class ClassA : NSObject,CgProtocol {
func compare(value : Int) ->Bool{
return true
}
}
现在完善compare方法,代码如下:
class ClassA : NSObject,CgProtocol {
var age = 0;
init(age:Int){
self.age = age
}
func compare(value : Int) ->Bool{
if age > value {
return true
} else {
return false
}
}
}
let classA = ClassA(age: 100)
let ret = classA.compare(50)
println("ret is \(ret)")
运行结果如图:
下面来讲一下强行转换的问题,classA遵守CgProtocol协议,我们可以把classA强行转化成CgProtocol,格式如下:
let p1 = classA as CgProtocol