creator升级1.8.2 后 ios8 报错

  • Creator 版本:1.8.2

  • 目标平台: iOS 8.3 8.1.3 8.4

creator1.8.2在ios8上的三个报错,更高版本的ios和所有安卓都没有下面这些问题。

问题一

最早的时候我们用的creator 1.6.几,那个时候是 map 的 for of 遍历会报错,所以我们换了种写法解决了,类似下面这个

[…this.seats[i].pengs].forEach(function ([id, v])

这次升级creator后发现 ios 8 上用这种写法会报错:

TypeError: undefined is not a function (evaluating ‘Array.from(e)’)

对应project.js中代码:
function c(e) {
if (Array.isArray(e)) {
for (var t = 0, s = Array(e.length); t < e.length; t++) s[t] = e[t];
return s;
}
return Array.from(e);
}

问题二

另外升级后 for of 遍历是能用了,类似:

for (const [ip, users] of ipUsers)

但是在 ios 8 上依然报错:

ReferenceError: Can’t find variable: Symbol

对应project.js代码:

try {
for (var o, a = eSymbol.iterator; !(s = (o = a.next()).done); s = !0) {
var r = o.value, h = i(r, 2), u = h[0], d = h[1];
d.length > 1 && this.sameIPUsers.set(u, d);
}
} catch (e) {
c = !0;
n = e;
}

问题三

用一个二维数组作为参数new另外一个map的时候:

TypeError: Map constructor does not accept arguments

对应代码:

this.seats[t].pengs = new Map(s[t].pengs);

一,不支持 Array.from,请直接return e
二,旧系统不支持 Symbol,建议不要用 for of
三,和 Symbol 一样,Map 在不同系统中同样会有兼容性问题,建议自己规避下。