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