AntNest 是一个基于 Go 语言 Interface 模型的 iOS App 模块化解耦编程的框架。
目前支持的模块的生命周期时间:
目前支持的基本的系统事件:
在子模块中实现对应的方法,AntNest 会自动将其分发到相应的模块。
@implementation ANOrderAntRoom
ANT_EXPORT_ANTROOM()
+ (AntRoomLevel)antRoomLevel {
return 1;
}
+ (instancetype)createInstance:(NSDictionary *)launchOptions {
return [ANOrderAntRoom new];
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSLog(@"ANOrderAntRoom room");
return YES;
}
@end
AntNest 扩展事件分发非常方便,以下是一个简单的例子:分发推送事件(AntNest 已经具备此事件接口)
@protocol ANRemotePushEvent <NSObject>
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler ;
@end
@interface AntNest (ANRemotePushEvent)<ANRemotePushEvent>
@end
[[AntNest sharedAntNest] registerProtocolEvent:@protocol(ANRemotePushEvent)];
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler {
[[AntNest sharedAntNest] application:application didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler];
}
ANT_EXPORT_ANTROOM()
实现 AntRoomProtocol 协议
antRoomLevel 表示模块的初始化优先级
+ (AntRoomLevel)antRoomLevel {
return 1;
}
+ (instancetype)createInstance:(NSDictionary *)launchOptions {
return [ANOrderAntRoom new];
}
模块间通讯通过 AntChannel 进行,传递的是实现 AntProtocol 协议的对象。
如果我们想获取一个支持以下功能的服务
@property(nonatomic, strong) NSString *orderID;
@property(nonatomic, strong) NSString *customerName;
@property(nonatomic, strong) NSString *shopName;
- (void)payOrder;
自定义 Protocol 获取服务实例
@protocol ANOrderDetailProtocol<AntProtocol>
@property(nonatomic, strong) NSString *orderID;
@property(nonatomic, strong) NSString *customerName;
@property(nonatomic, strong) NSString *shopName;
- (void)payOrder;
@end
...
id<ANOrderDetailProtocol> orderDetail = ANT_CHANNEL(ANOrderDetailProtocol, [[ANAntDes alloc] initWith:@"ANOrderDetailAnt"])
AntChannel 中传递的都是 ant service
ANT_EXPORT_ANT()
+ (AntType)antType {
return @"OrderDetailAnt";
}
+ (instancetype)createInstance:(id<ANOrderDetailDescriptionProtocol>)antDescription {
ANOrderDetailViewController *order = [ANOrderDetailViewController new];
order.title = antDescription.orderID;
order.customerName = antDescription.customerName;
order.shopName = antDescription.shopName;
return order;
}
通过 CocoaPods(https://cocoapods.org.cn)可以获取 AntNest。要安装,只需将以下行添加到 Podfile 中
pod "AntNest"
AntNest采用MIT许可证。有关更多信息,请参阅LICENSE文件。