小编Dev*_*138的帖子

JSONSerialization.jsonObject 导致 swift 4.0 和 4.2 中的内存泄漏

我正在开发一个 iOS 应用程序,使用 swift 4.0(4.2 有同样的问题)。

我为 Encodable 添加了扩展

extension Encodable{

    func toDict() throws -> [String:Any]? {
        let jsonEncoder = JSONEncoder()
        let jsonData = try jsonEncoder.encode(self)
        do{
            return try JSONSerialization.jsonObject(with: jsonData, options: []) as? [String: Any]
        }
        catch{
            return nil
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我有一个 Encodable 类的实例,它的属性也属于 Encodable 类,并注意到在instance.toDict()经常调用时,我的应用程序使用的内存增加了很多。即使我不使用返回的结果也是如此,如果我返回 nil 并忽略JSONSerialization.jsonObject.

我确定是这一行导致了问题(忽略结果并返回 nil 仍然会导致问题,注释该行并返回 nil 将停止内存增加。

随着时间的推移,内存越来越大,toDict()被调用的次数也越来越多,我最终在 10 分钟内使用了 400MB。

有没有人遇到过这个问题?有解决办法吗?

memory-leaks ios nsjsonserialization swift

5
推荐指数
1
解决办法
1471
查看次数

Firebase自定义令牌身份验证(firebase版本3)

我有一个身份验证服务器(NodeJS),我在其中验证用户并创建自定义firebase令牌

   var token = firebase.auth().createCustomToken(userId); 
Run Code Online (Sandbox Code Playgroud)

我曾经能够验证用户令牌(以前的版本),但现在它不是那么简单......

我想从令牌中获取解码的userId

  firebase.auth().verifyIdToken(token).then(function)....
Run Code Online (Sandbox Code Playgroud)

不适用于服务器生成的自定义令牌.

有谁知道如何做到这一点?

node.js firebase firebase-authentication

2
推荐指数
1
解决办法
1242
查看次数