Protocols 协议

Objective-C 里的协议和 Swift 里面的还蛮像的,而且是否遵从协议是可选的,比如说你可以不遵守 UITableViewDelegate 协议,而是自己写一个表格的委托(delegate)文件。

可以这么说,Swift 里的协议是脱胎于 Objective-C 的,尤其是当你用到 @objc 属性的时候。Swift 里的协议有必写和选写的部分,Objective-C 里也是一毛一样的。

那如何在 Objective-C 里让一个类去遵守协议呢?你需要在类的名称后面加上一对尖角括号(<>)。

一般情况下,我们的类是这样写的:

@interface Person : NSObject

但如果你要让这个类遵从某个协议的话,就要这样写:

@interface Person : NSObject <NSCopying, NSCoding>

当然了,我们如果想在运行时再让某个对象遵从这个协议的话,就可以这样写:

if ([myPerson class] conformsToProtocol:@protocol(MyProtocol)]) {

也可以让整个类这么做:

[MyClass conformsToProtocol:@protocol(MyProtocol)];

总之啦,你在 Swift 里面知道多少关于协议的东西,那在 Objective-C 里面就是一样的。

(・_・ヾ

results matching ""

    No results matching ""