ALEXTANGXIAO / TEngine

Unity框架解决方案-支持HybridCLR(最好的次时代热更)与YooAssets(优秀商业级资源框架)。
MIT License
1.09k stars 236 forks source link

这样写的目的是啥,用倒序删除是否也可以实现? #74

Closed gsm958708323 closed 4 months ago

gsm958708323 commented 4 months ago

这样写的目的是啥,用倒序删除是否也可以实现?

image

gsm958708323 commented 4 months ago

发现逻辑bug,最后一个元素赋值到当前位置,移除的当前元素list[i],那相当于把最后一个元素移除掉了???

ALEXTANGXIAO commented 4 months ago

这块没有任何 bug,线上验证且优化过。请仔细梳理清楚,倒序移除也能实现,但是整个数组会往前移,性能并不是最优解。

gsm958708323 commented 4 months ago

不应该是先Release再赋值吗🤔

EventRegInfo.Release(listListener[i]);
listListener[i] = listListener[^1];
listListener.RemoveAt(listListener.Count - 1);
ALEXTANGXIAO commented 4 months ago

之前没做池化。现在池化后Release回收的确实有问题,这里确实应该这样写。

Keeyuu commented 3 months ago

不应该是先Release再赋值吗🤔

EventRegInfo.Release(listListener[i]);
listListener[i] = listListener[^1];
listListener.RemoveAt(listListener.Count - 1);

同问

ALEXTANGXIAO commented 3 months ago

已经修过了