@H_502_1@/*
@H_502_1@作用:
1@H_502_1@、Protocol(@H_502_1@协议)@H_502_1@用于统一方法和属性的名称,而不实现任何功能。
2@H_502_1@、协议能够被类,枚举,结构体实现,满足协议要求的类型被称为协议的遵循者。
3@H_502_1@、遵循者需要提供协议指定的成员,如属性,方法,操作符,下标等
@H_502_1@
@H_502_1@语法:
@H_502_1@protocol 协议名@H_502_1@ {
@H_502_1@}
struct @H_502_1@类型:协议一,协议二 {
class @H_502_1@类型:父类,协议一,协议二 {
@H_502_1@}
@H_502_1@说明:
1@H_502_1@、协议本身不实现任何功能,但你可以将它当做类型来使用
2@H_502_1@、协议也可以继承一个或多个(@H_502_1@用逗号隔开)@H_502_1@其它协议
3@H_502_1@、协议中也可添加可选的属性或方法,并且只对类有效
(@H_502_1@协议前添加@objc@H_502_1@说明是可选的,属性或方法前添加optional)
@H_502_1@*/
@H_502_1@
@objc@H_502_1@ protocol@H_502_1@ AddProtocol {
@H_502_1@//只读
@H_502_1@ var@H_502_1@ a:Int@H_502_1@ {get@H_502_1@}
@H_502_1@//可读可写
@H_502_1@ var@H_502_1@ b:Int@H_502_1@ {get@H_502_1@set@H_502_1@}
@H_502_1@ func@H_502_1@ add() ->Int
@H_502_1@
@H_502_1@@objc@H_502_1@optional @H_502_1@var c:Int {@H_502_1@get}
@H_502_1@ @objc@H_502_1@optional@H_502_1@ func@H_502_1@ optionalFunc()
@H_502_1@}
@H_502_1@
protocol@H_502_1@ SubProcotol {
@H_502_1@ func@H_502_1@ sub()->Int
@H_502_1@}
@H_502_1@
class Calculate: @H_474_301@NSObject,@H_502_1@AddProtocol,@H_502_1@SubProcotol {
@H_502_1@ var@H_502_1@ a:Int@H_502_1@ {
@H_502_1@ }
@H_502_1@ var@H_502_1@ b:Int@H_502_1@ = 0
@H_502_1@ func@H_502_1@ add() ->Int@H_502_1@ {
@H_502_1@ return@H_502_1@a@H_502_1@+b
@H_502_1@ }
@H_502_1@ func@H_502_1@ sub() ->Int@H_502_1@ {
@H_502_1@ return@H_502_1@a@H_502_1@-b
@H_502_1@ }
@H_502_1@}
@H_502_1@
var@H_502_1@ calc = Calculate@H_502_1@()
@H_502_1@//calc.a = 100
print@H_502_1@(calc@H_502_1@.add@H_502_1@())
print@H_502_1@(calc@H_502_1@.sub@H_502_1@())
@H_502_1@
let c2 = calcas @H_502_1@AddProtocol
@H_502_1@//c2.optionalFunc!()
//@H_502_1@这样调用会隐式解包,解包失败返回nil
c2@H_502_1@.optionalFunc?()
原文链接:https://www.f2er.com/swift/321698.html