Swift协议式编程
/**
* 定义协议
* @objc 并且继承 NSObjectProtocol OC就可以调用了
*/
protocol AppProtocol {
var appName: String { get set }
// 必须协议方法
func requireProtocolMethod1()
func requireProtocolMethod2()
// 可选协议方法
//@objc optional func optionalProtocolMethod1()
//@objc optional func optionalProtocolMethod12()
}
// MARK: - <extension AppProtocol 实现协议方法>
extension AppProtocol {
func requireProtocolMethod1() {
debugPrint("\(self)--" + "requireProtocolMethod1")
}
func requireProtocolMethod2() {
debugPrint("\(self)--" + "requireProtocolMethod2")
}
func optionalProtocolMethod1() {
debugPrint("\(self)--" + "optionalProtocolMethod1")
}
func optionalProtocolMethod2() {
debugPrint("\(self)--" + "optionalProtocolMethod2")
}
}
extension UIViewController: AppProtocol {
var appName: String {
get {
return "AppProtocol"
}
set {
}
}
// 调用协议方法
func useAppProtocol() {
requireProtocolMethod1()
requireProtocolMethod2()
optionalProtocolMethod1()
optionalProtocolMethod2()
}
}
Swift协议暴露给OC调用
/// @objc 并且继承 NSObjectProtocol OC就可以调用了
@objc protocol HomeProtocol: NSObjectProtocol {
@objc func homeViewWillAppear()
@objc optional func homeViewDidAppear()
}
extension HomeProtocol {
func homeViewWillAppear() {
debugPrint("homeViewWillAppear")
}
func homeViewDidAppear() {
debugPrint("homeViewDidAppear")
}
}
网友评论