通过Swift学习Objective-C:协议与委托
之前在通过Swift学习Objective-C:变量、类、方法和属性和 通过Swift学习Objective-C:条件、流程、集合简述了基本的Swift和Objective-C语法转换。这一篇主要讲协议和委托。
协议
声明协议
- 协议相当于没有与类相关联的接口,他申明一组方法,列出他的参数和返回值,共享给其他类使用,然后不进行实现,让用它的类来实现这些方法
- 在任何一个类中,只有声明了协议,都可以实现协议里的方法。
- 协议不是一个类,更没有父类了。
- 协议里面的方法经常都是一些委托方法。 Swift
1 | protocol SampleProtocol |
Objective-C
1 | @protocol SampleProtocol <NSObject> |
服从协议(Conforming to a protocol)
Swift
1 | class MyClass: SampleProtocol |
Objective-C
1 | @interface MyClass : NSObject<SampleProtocol> |
委托(Delegation)
委托,故名思议就是托别人办事。打个比方:
张三迫切需要一分工作,但是不知道去哪找。于是他就拜托(委托)李四给帮找一份合适工作,但是托人办事得给被人好处啊,于是张三给李四塞了一个红包(协议),于是李四通过自己关系在某公司找了一份文秘的工作(实现协议里面委托方法),于然后他把文秘这份工作给了张三,张三就找到工作了;
声明委托属性
Swift
1 | class FirstClass |
Objective-C
1 | @interface FirstClass : NSObject |
调用委托
Swift
1 | delegate?.someMethod() |
Objective-C
1 | if (self.delegate) |