iOS:Timer key change from NSString to NSNumber
This commit is contained in:
parent
f721713615
commit
cc1b4d92cb
@ -42,7 +42,7 @@ - (void)onLog:(DoricLogType)type message:(NSString *)message {
|
||||
@end
|
||||
|
||||
@interface DoricJSEngine ()
|
||||
@property(nonatomic, strong) NSMutableDictionary *timers;
|
||||
@property(nonatomic, strong) NSMutableDictionary <NSNumber *, NSTimer *> *timers;
|
||||
@property(nonatomic, strong) DoricBridgeExtension *bridgeExtension;
|
||||
@property(nonatomic, strong) NSDictionary *innerEnvironmentDictionary;
|
||||
@property(nonatomic, strong) NSThread *jsThread;
|
||||
@ -170,19 +170,18 @@ - (void)initJSExecutor {
|
||||
[self.jsExecutor injectGlobalJSObject:INJECT_TIMER_SET
|
||||
obj:^(NSNumber *timerId, NSNumber *interval, NSNumber *isInterval) {
|
||||
__strong typeof(_self) self = _self;
|
||||
NSString *timerId_str = [timerId stringValue];
|
||||
BOOL repeat = [isInterval boolValue];
|
||||
NSTimer *timer = [NSTimer timerWithTimeInterval:[interval doubleValue] / 1000 target:self selector:@selector(callbackTimer:) userInfo:@{@"timerId": timerId, @"repeat": isInterval} repeats:repeat];
|
||||
[self.timers setValue:timer forKey:timerId_str];
|
||||
self.timers[timerId] = timer;
|
||||
dispatch_async(dispatch_get_main_queue(), ^() {
|
||||
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
|
||||
});
|
||||
}];
|
||||
|
||||
[self.jsExecutor injectGlobalJSObject:INJECT_TIMER_CLEAR
|
||||
obj:^(NSString *timerId) {
|
||||
obj:^(NSNumber *timerId) {
|
||||
__strong typeof(_self) self = _self;
|
||||
NSTimer *timer = [self.timers valueForKey:timerId];
|
||||
NSTimer *timer = self.timers[timerId];
|
||||
if (timer) {
|
||||
[self.timers removeObjectForKey:timerId];
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
@ -284,7 +283,7 @@ - (void)callbackTimer:(NSTimer *)timer {
|
||||
message:[NSString stringWithFormat:@"Timer Callback error:%@", exception.reason]];
|
||||
}
|
||||
if (![repeat boolValue]) {
|
||||
[self.timers removeObjectForKey:[timerId stringValue]];
|
||||
[self.timers removeObjectForKey:timerId];
|
||||
}
|
||||
}];
|
||||
}
|
||||
|
Reference in New Issue
Block a user