我被委托清理我们代码中的内存泄漏,并添加检查以防止进一步泄漏。 我注意到未分离处理程序似乎是主要原因。 大多数都很简单,但是有几个代码中的东西让我不知所措。
首先:
其次,对于匿名处理程序:
我不想就“是的,没错”而言罢了,我想知道为什么这些事情不起作用(假设我的断言是正确的)。
首先:
myObject.someEvent -= null;
我是否正确地认为这根本什么也没做?(我知道如果事件是本地的,则可以将其设置为null,因为它本质上是多播委托)。其次,对于匿名处理程序:
myObject.someEvent += ()=> { x + y; };
myObject.someEvent -= ()=> { x + y; };
我是否正确地说第二条指令也是无用的,因为匿名方法将编译为两个单独的委托,因此减法实际上并没有指向需要删除的正确处理程序? (对于任何寻找解决此问题的正确解决方案的人,请在此处查看)。我不想就“是的,没错”而言罢了,我想知道为什么这些事情不起作用(假设我的断言是正确的)。