Merge pull request #3094 from wqyfavor/fix-random-dark-handler
[iOS] Do not reserve dark scheme handler.
diff --git a/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m b/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m
index d033379..81bf780 100644
--- a/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m
+++ b/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m
@@ -489,7 +489,12 @@
});
// ensure default modules/components/handlers are ready before create instance
[WXSDKEngine registerDefaults];
+ id darkSchemeHandler = [WXSDKInstance darkSchemeColorHandler];
[[NSNotificationCenter defaultCenter] postNotificationName:WX_SDKINSTANCE_WILL_RENDER object:self];
+ if ([WXSDKInstance darkSchemeColorHandler] != darkSchemeHandler) {
+ // After notification, handler for WXDarkSchemeProtocol might change.
+ self.schemeName = [WXUtility isSystemInDarkScheme] ? @"dark" : @"light";
+ }
if ([self _handleConfigCenter]) {
int wxErrorCode = 9999;
@@ -587,7 +592,12 @@
});
// ensure default modules/components/handlers are ready before create instance
[WXSDKEngine registerDefaults];
+ id darkSchemeHandler = [WXSDKInstance darkSchemeColorHandler];
[[NSNotificationCenter defaultCenter] postNotificationName:WX_SDKINSTANCE_WILL_RENDER object:self];
+ if ([WXSDKInstance darkSchemeColorHandler] != darkSchemeHandler) {
+ // After notification, handler for WXDarkSchemeProtocol might change.
+ self.schemeName = [WXUtility isSystemInDarkScheme] ? @"dark" : @"light";
+ }
_mainBundleString = mainBundleString;
if ([self _handleConfigCenter]) {
@@ -1200,12 +1210,7 @@
+ (id<WXDarkSchemeProtocol>)darkSchemeColorHandler
{
- static id<WXDarkSchemeProtocol> colorHandler;
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- colorHandler = [WXHandlerFactory handlerForProtocol:@protocol(WXDarkSchemeProtocol)];
- });
- return colorHandler;
+ return [WXHandlerFactory handlerForProtocol:@protocol(WXDarkSchemeProtocol)];
}
- (NSString*)currentSchemeName