0
我遇到了与PostSet侦听器结合使用的不一致类状态问题。Matlab类:不一致状态和'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?
- 我可以使用一致性标志作为另一个属性。但是如何延迟侦听器的执行?
- 我可以定义自己的通知,但一切正常与预定义的函数一起工作。
如何只听'propB'? – chappjc 2014-12-04 20:56:34
@chappjc:在这个例子中看起来可能,但propA和propB都可以单独更改,因此我需要两个监听器。 – 2014-12-05 10:21:42
您需要将第三个标志存储为私有属性,以临时禁用postChange中的比较。你可以在两个赋值之间的setSize中设置它。 – Navan 2014-12-05 16:21:04