NNPopObjc Objective-C 面向协议的编程

NNPopObjc Objective-C 面向协议的编程

Posted by 顾海军 on October 14, 2019

GitHub

介绍

一些文章提到:

OC无法做到面向协议开发,而Swift可以,因为Swift可以做到协议方法的具体实现,而OC不行

NNPopObjc 受面向协议编程的启发,为协议提供了实现扩展的功能。实现 Objective-C 面向协议的编程。

快速开始

声明协议

.h 文件中声明协议

@protocol NNDemoProtocol <NSObject>

@optional
- (void)sayHelloPop;
+ (void)sayHelloPop;

@end

扩展协议

扩展协议需要在 .m 中实现

/// 默认协议扩展
@nn_extension(NNDemoProtocol)

+ (void)sayHelloPop {
    DLog(@"+[%@ %s] code say hello pop", self, sel_getName(_cmd));
}

- (void)sayHelloPop {
    DLog(@"-[%@ %s] code say hello pop", [self class], sel_getName(_cmd));
}

@end

遵守协议

  • 创建类
@interface NNDemoObjc : NSObject <NNDemoNameProtocol>

@end
  • 实现类
1
2
3
@implementation NNDemoObjc

@end

使用类

  • 调用方法
[NNDemoObjc sayHelloPop];
[[NNDemoObjc new] sayHelloPop];
  • 输出日志
+[NNDemoObjc sayHelloPop] code say hello pop
-[NNDemoObjc sayHelloPop] code say hello pop

安装

NNPopObjc 支持 CocoaPods 方式集成。

安装 CocoaPods

使用以下命令安装:

1
$ gem install cocoapods

Podfile

将 NNPopObjc 添加到 Podfile ,通过 CocoaPods 集成 NNPopObjc 到 Xcode 项目:

1
2
3
4
5
6
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'

target 'TargetName' do
pod 'NNPopObjc', '~> 0.2.1'
end

执行命令:

1
pod install

如安装失败,提示:

1
[!] Unable to find a specification for `NNPopObjc`

尝试使用命令:

1
pod install --repo-update