Cc.utils.ByteArray.toString BUG

用luasocket 接受数据方法

function GameSocket:onData(__event)
print(“socket receive raw data:”, cc.utils.ByteArray.toString(__event.data, 16))

self._buf:parsePackets(__event.data)
end
如果 __event.data 的数据长度超过1954个字节,就卡死了,无法往下执行。
超过1954个字节是我个人环境,不知道换一个环境是否不存在这个问题。

看了cc.utils.ByteArray.toString的实现,在数据长度很大的时候,使用的字串操作函数需要的内存将大幅增长。
建议你自己优化一下这个函数。如果不愿意自己修改,另一个解决的方法是调用前判断数据长度,过长的话分段进行处理。

貌似1954有点大了。

toString应该是用于调试目的,接近2K的字节似乎超过这个目的了吧?也很难用肉眼看清吧?