unity一般会写这样的代码
void OnDestroy()
{
_joystick.onJoystickDownEvent -= OnJoystickDownEvent;
_joystick.onJoystickMoveEvent -= OnJoystickMoveEvent;
_joystick.onJoystickUpEvent -= OnJoystickUpEvent;
}
添加了,就要释放,是不是?要不内存泄漏怎么解决,凡事都套个“内存泄漏”才能表现自己专业嘛
结果,这几句代码都是warning
分析可看下面参考链接
虽然分析说,可能warning不正确,不准确,理据不足
但事实是,写这样的代码的人,又理据充足了,连代码做了什么操作,实现了什么功能都不知道,就不需要妄论什么理据?
个人觉得,C#认为delegate是松耦合,足够,所以就不需要subtract delegate,作为“高级”语言,也不建议“一般”程序员,释放,增删查改,其实“删”是最危险的,C#建议内存多了也无所谓因为不会爆(因为有GC),但不能过分依赖GC,因为内存多了会导致GC释放频繁(当然就算你subtrace delegate,也不代表马上能释放GC);
所以你写不写上面的代码都无所谓
多”删“,还不是少”增“
一般的解决方法确实就是取消warning..
分析参考链接:
为什么R#警告Warning:Delegate subtraction has unpredictable result_18790970257的博客-CSDN博客