This repository has been archived on 2022-03-12. You can view files and clone it, but cannot push or open issues or pull requests.

43 lines
1.2 KiB
Mathematica
Raw Normal View History

2021-04-02 02:24:13 +03:00
// Copyright 2018-present 650 Industries. All rights reserved.
#import <UMAppLoader/UMAppLoaderProvider.h>
#import <UMAppLoader/UMAppLoaderInterface.h>
static NSMutableDictionary<NSString *, Class> *UMProvidedAppLoaderClasses;
extern void UMRegisterAppLoader(NSString *, Class);
extern void UMRegisterAppLoader(NSString *loaderName, Class loaderClass)
{
if ([loaderClass conformsToProtocol:@protocol(UMAppLoaderInterface)]) {
if (!UMProvidedAppLoaderClasses) {
UMProvidedAppLoaderClasses = [NSMutableDictionary new];
}
UMProvidedAppLoaderClasses[loaderName] = loaderClass;
} else {
NSLog(@"UMAppLoader class (%@) doesn't conform to the UMAppLoaderInterface protocol.", NSStringFromClass(loaderClass));
}
}
@implementation UMAppLoaderProvider
- (nullable id<UMAppLoaderInterface>)createAppLoader:(NSString *)loaderName
{
Class loaderClass = UMProvidedAppLoaderClasses[loaderName];
return [loaderClass new];
}
# pragma mark - static
+ (nonnull instancetype)sharedInstance
{
static UMAppLoaderProvider *loaderProvider;
static dispatch_once_t once;
dispatch_once(&once, ^{
loaderProvider = [[UMAppLoaderProvider alloc] init];
});
return loaderProvider;
}
@end