optimize: make lazy registered doric library effective

This commit is contained in:
pengfei.zhou
2021-06-22 14:23:25 +08:00
committed by osborn
parent 28713aebbd
commit 8339a64663
3 changed files with 28 additions and 9 deletions

View File

@@ -57,6 +57,7 @@
@interface DoricLibraries : NSObject
@property(nonatomic, strong) NSMutableSet <DoricLibrary *> *libraries;
@property(nonatomic, strong) NSMutableArray <NSValue *> *registries;
+ (instancetype)instance;
@end
@@ -65,6 +66,7 @@ @implementation DoricLibraries
- (instancetype)init {
if (self = [super init]) {
_libraries = [NSMutableSet new];
_registries = [NSMutableArray new];
}
return self;
}
@@ -93,6 +95,12 @@ @implementation DoricRegistry
+ (void)register:(DoricLibrary *)library {
[DoricLibraries.instance.libraries addObject:library];
for (NSValue *value in DoricLibraries.instance.registries) {
DoricRegistry *registry = value.nonretainedObjectValue;
if (registry) {
[library load:registry];
}
}
}
- (instancetype)init {
@@ -106,6 +114,8 @@ - (instancetype)init {
[DoricLibraries.instance.libraries enumerateObjectsUsingBlock:^(DoricLibrary *obj, BOOL *stop) {
[obj load:self];
}];
NSValue *value = [NSValue valueWithNonretainedObject:self];
[DoricLibraries.instance.registries addObject:value];
}
return self;
}