类对象不会删除如果它有一个计时器的财产

8视图(30天)

假设我们有一个类计时器财产,其TimerFcn是类方法之一。的删除这个类的方法不会调用时自动变量引用对象处理。

可能是因为定时器对象保持一个类对象的引用TimerFcn,所以还有一个参考对象一个MATLAB不会删除它。是的,这是可能的调用删除方法明确,但是它会自动的方式吗?

classdef测试<处理属性tm结束方法自我测试()=自我功能。tm =计时器(“TimerFcn”,@(~, ~) self.f(), 'ExecutionMode', 'FixedRate', 'Period', 1); end function delete(~) fprintf('DELETE\n'); end function f(~) fprintf('ALIVE\n'); end end end

- - - - - -

> > t =测试();> >明确> > %删除这里发生了但这并不应该> >开始(timerfindall())活着活着活着活着> >停止(timerfindall()) > >删除(timerfindall())删除> >

接受的答案

沃尔特·罗伯森
沃尔特·罗伯森 2018年10月1日
计时器是处理语义,所以住在当他们被分配的任何变量超出范围。
也许onCleanup()会帮助你吗?
5个评论
照办潘克拉斯
照办潘克拉斯 2022年7月8日
这是特别有用如果范围测试的生命周期,就像在一个函数或一个不同的类。在这种情况下,创建cleanup_object旁边,测试超出范围时,摧毁了。好了!
但如果从函数返回的测试,我不知为何需要拖动cleanup_object,对吧?然后当我分配的变量来测试了,cleanup_object也应该被清除(手动或自动)。
…还是我错过了?

登录置评。

更多的答案(0)

类别

找到更多的在编程工具帮助中心文件交换

s manbetx 845


释放

R2018a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!