我在我的快速项目中使用websocket,从最后几周开始,我收到了这样的崩溃:
<编译器生成的>第0行
Crashed: com.MyProject.Channel
0 MYProject 0x100e53f7c specialized Arrayat(_:) (<compiler-generated>)
1 MYProject 0x100e55a3c $S6MYProject7ChannelC20checkResponseMessage33_12B1408E1049A8D244FCDCBD3CEC 8679LL08responseE0yAA0bE0C_tFyyXEfU_ (Channel.swift:137)
2 MYProject 0x100ce3de8 $SIg_Ieg_TR (<compiler-generated>)
3 MYProject 0x100ce3e08 $SIeg_IyB_TR (<compiler-generated>)代码中的更多信息:
Channel.TMLock.sync {
var idx = 0
for msg in Channel.trackedMsgs {
mt = msg
if msg.isResponseTo(responseMessage: responseMessage) {
Channel.trackedMsgs.remove(at: idx)
break
}
idx += 0
}
}
Channel.swift:137 => Channel.trackedMsgs.remove(at: idx)有人知道这件事吗?
发布于 2019-08-05 12:48:03
Channel.TMLock.sync {
var idx = 0
for msg in Channel.trackedMsgs {
mt = msg
if msg.isResponseTo(responseMessage: responseMessage) {
Channel.trackedMsgs.remove(at: idx) -> Removing elements while iteration will cause crash
break
}
idx += 0
}
}您可以将其改写为:
Channel.TMLock.sync {
var idx = 0
var indexOfElement = 0
while indexOfElement < Channel.trackedMsgs.length{
mt = msg
if msg.isResponseTo(responseMessage: responseMessage) {
Channel.trackedMsgs.remove(at: idx)
break
}
idx += 0
indexOfElement += 1
}
}https://stackoverflow.com/questions/54441540
复制相似问题