flutter-thrio / flutter_thrio

flutter_thrio makes it easy and fast to add flutter to existing mobile applications, and provide a simple and consistent navigator APIs.
MIT License
362 stars 49 forks source link

ios中类型判断的方式引起问题 #20

Closed foxsofter closed 3 years ago

foxsofter commented 3 years ago
- (void)set:(id _Nullable)value forKey:(NSString *)key {
    if ([_params.allKeys containsObject:key] &&
        ![NSStringFromClass([_params[key] class]) isEqualToString:NSStringFromClass([value class])]) {
        return;
    }
    id v = _params[key];
    if (v != value) {
        _params[key] = value;
        id v = [ThrioModule serializeParams:value];
        if ([v canTransToFlutter]) {
            // 将数据同步给所有的 FlutterEngine
            [NavigatorFlutterEngineFactory.shared setModuleContextValue:value
                                                                 forKey:key];
        }
    }
}

这里通过 NSStringFromClass 获取字符串的类型会存在不同,导致问题,字符串太短的时候 NSStringFromClass([value class]) 得到的 NSTaggedPointerString

foxsofter commented 3 years ago

2.0.6 和 2.0.7 已修复