@@ -151,7 +151,7 @@ + (void)_performBlockOnBridgeThread:(void (^)(void))block
151
151
if ([NSThread currentThread ] == [self jsThread ]) {
152
152
block ();
153
153
} else {
154
- [self performSelector: @selector (_performBlockOnBridgeThread:instance: )
154
+ [self performSelector: @selector (_performBlockOnBridgeThread: )
155
155
onThread: [self jsThread ]
156
156
withObject: [block copy ]
157
157
waitUntilDone: NO ];
@@ -205,12 +205,18 @@ + (void)_performBlockOnBackupBridgeThread:(void (^)(void))block putInTaskQueue:(
205
205
return ;
206
206
}
207
207
if (putInTaskQueue) {
208
- [[WXSDKManager bridgeMgr ].jsTaskQueue addObject: block];
208
+ [WXBridgeManager _performBlockOnBackupBridgeThread: ^{
209
+ [[WXSDKManager bridgeMgr ].jsTaskQueue addObject: block];
210
+ } putInTaskQueue: NO ];
209
211
} else {
210
- [self performSelector: @selector (_performBlockOnBridgeThread:instance: )
211
- onThread: [self backupJsThread ]
212
- withObject: [block copy ]
213
- waitUntilDone: NO ];
212
+ if ([NSThread currentThread ] == [self backupJsThread ]) {
213
+ block ();
214
+ } else {
215
+ [self performSelector: @selector (_performBlockOnBridgeThread:instance: )
216
+ onThread: [self backupJsThread ]
217
+ withObject: [block copy ]
218
+ waitUntilDone: NO ];
219
+ }
214
220
}
215
221
}
216
222
@@ -350,13 +356,17 @@ - (void)createInstance:(NSString *)instance
350
356
}
351
357
352
358
- (void )executeJSTaskQueue {
353
- if (_jsTaskQueue.count == 0 || !_supportMultiJSThread) {
354
- return ;
355
- }
356
- for (id block in _jsTaskQueue) {
357
- [WXBridgeManager _performBlockOnBackupBridgeThread: block putInTaskQueue: NO ];
358
- }
359
- [_jsTaskQueue removeAllObjects ];
359
+ __weak typeof (self) weakSelf = self;
360
+ [WXBridgeManager _performBlockOnBackupBridgeThread: ^{
361
+ if (weakSelf.jsTaskQueue .count == 0 || !weakSelf.supportMultiJSThread ) {
362
+ return ;
363
+ }
364
+ for (id task in weakSelf.jsTaskQueue ) {
365
+ void (^block)(void ) = task;
366
+ block ();
367
+ }
368
+ [weakSelf.jsTaskQueue removeAllObjects ];
369
+ } putInTaskQueue: NO ];
360
370
}
361
371
362
372
- (WXThreadSafeMutableArray *)instanceIdStack
0 commit comments