一个类别可以在Objective C中实现协议吗?

cfi*_*her 86 cocoa protocols objective-c categories

我在NSDate上有一个类别,如果它可以实现我之前创建的协议将会很方便.这可能吗?什么是正确的语法?

Nik*_*uhe 142

是的,这是可能的.语法是:

@interface NSDate (CategoryName) <ProtocolName>
@end

@implementation NSDate (CategoryName)
@end
Run Code Online (Sandbox Code Playgroud)

这是Apple关于该主题的文档.

也可以使用类扩展来完成此操作.我非常喜欢私下遵守委托协议.这样做会隐藏从公共接口成为某个类的某个委托的实现细节,并从标头中删除依赖项.