Skip to content

Commit fdf5ed7

Browse files
committed
* [ios] ensure default modules/components/handlers are ready before create instance.
1 parent 9b6f726 commit fdf5ed7

File tree

3 files changed

+21
-4
lines changed

3 files changed

+21
-4
lines changed

ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.h

+6-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,12 @@
1313
@interface WXSDKEngine : NSObject
1414

1515
/**
16-
* @abstract Registers a module for a given name
16+
* @abstract Register default modules/components/handlers, they will be reigstered only once.
17+
**/
18+
+ (void)registerDefaults;
19+
20+
/**
21+
* @abstract Register a module for a given name
1722
*
1823
* @param name The module name to register
1924
*

ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.m

+11-3
Original file line numberDiff line numberDiff line change
@@ -208,13 +208,21 @@ + (void)initSDKEnvironment:(NSString *)script
208208
return;
209209
}
210210

211-
[self _registerDefaultComponents];
212-
[self _registerDefaultModules];
213-
[self _registerDefaultHandlers];
211+
[self registerDefaults];
214212

215213
[[WXSDKManager bridgeMgr] executeJsFramework:script];
216214
}
217215

216+
+ (void)registerDefaults
217+
{
218+
static dispatch_once_t onceToken;
219+
dispatch_once(&onceToken, ^{
220+
[self _registerDefaultComponents];
221+
[self _registerDefaultModules];
222+
[self _registerDefaultHandlers];
223+
});
224+
}
225+
218226
+ (NSString*)SDKEngineVersion
219227
{
220228
return WX_SDK_VERSION;

ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m

+4
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
#import "WXResourceRequest.h"
2626
#import "WXResourceResponse.h"
2727
#import "WXResourceLoader.h"
28+
#import "WXSDKEngine.h"
2829

2930
NSString *const bundleUrlOptionKey = @"bundleUrl";
3031

@@ -173,6 +174,9 @@ - (void)_renderWithMainBundleString:(NSString *)mainBundleString
173174
}
174175
});
175176

177+
// ensure default modules/components/handlers are ready before create instance
178+
[WXSDKEngine registerDefaults];
179+
176180
[[WXSDKManager bridgeMgr] createInstance:self.instanceId template:mainBundleString options:dictionary data:_jsData];
177181

178182
WX_MONITOR_PERF_SET(WXPTBundleSize, [mainBundleString lengthOfBytesUsingEncoding:NSUTF8StringEncoding], self);

0 commit comments

Comments
 (0)