Ste*_*sen 11 objective-c websocket ios react-native
在React Native中使用websocket blob实现时,我们遇到内存泄漏,并且无法完全找到问题.
使用Xcode Instruments,我们可以看到问题很可能发生在框架处理RCTSRWebSocket.m中的二进制消息的方式中,或者稍后可能在RCTWebSocketModule.m的调用树中处理
任何具有Object-C技能的人都能够看到为什么某些内存(可能是对收到的消息进行了分配)没有被正确发布?
问题终于可以得到解决了。在深入研究 WebSocket 的实现,尤其是 Blob 后,我发现只要不直接关闭,所有 Blob 都会保留在内存中。
这意味着在处理完接收到的数据后,您应该像这样关闭 Blob:
ws.onmessage = function (e) {
// Do whatever with the data through e.data.
const data = e.data;
// When you are done with the received data, you must close the Blob:
e.data.close();
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
486 次 |
| 最近记录: |