与 PostSet 侦听器结合使用时,我遇到了不一致的类状态问题。
classdef myClass < handle
properties (SetObservable,GetAccess = public, SetAccess = public )
propA;
propB;
end
methods
function myClass = myClass()
myClass.propA = zeros(2);
myClass.propB = zeros(2);
addlistener(myClass,{'propA','propB'},'PostSet',@myClass.propChange);
end
end
methods
function setSize(myClass, size)
myClass.propA = zeros(size);
myClass.propB = zeros(size);
end
function propChange(obj,eventData, metaProp)
disp(obj.propA - obj.propB)
end
end
end
主要功能是:
m = myClass();
m.setSize([1,2])
propA 和 propB 上的侦听器函数需要两个属性的大小相同。不幸的是, setSize 会造成短暂的不一致。
解决方法:
- 有没有办法同时设置 propA 和 propB 以便稍后执行 PostSet?
- 我可以使用一致性标志作为另一个属性。但是如何延迟监听器的执行呢?
- 我可以定义自己的通知,但一切都与预定义的功能很好地配合。