Установка класса ConstructOnLoad
припишите true
причины MATLAB® вызывать конструктора класса при загрузке класса. MATLAB сохраняет и восстанавливает динамические свойства при загрузке объекта.
Если вы создаете динамические свойства из конструктора класса, можно вызвать конфликт, если вы также устанавливаете класс ConstructOnLoad
припишите true
. Вот последовательность:
Сохраненный объект сохраняет имена и значения свойств, включая динамические свойства
Когда загружено, новый объект создается, и все свойства восстанавливаются значениям в то время, когда объект был сохранен
Затем ConstructOnLoad
атрибут вызывает вызов конструктора класса, который создал бы другое динамическое свойство с тем же именем как загруженное свойство. Смотрите Сохраняют и Объекты Загрузки для больше на последовательности загрузки.
MATLAB предотвращает конфликт путем загрузки сохраненного динамического свойства и не выполняет addprop
при вызове конструктора.
Если вы используете ConstructOnLoad
, добавьте динамические свойства из конструктора класса и хотите, чтобы конструктор вызвал addprop
во время загрузки, затем устанавливает динамическое свойство Transient
припишите true
. Эта установка препятствует свойству быть сохраненной. Например:
classdef (ConstructOnLoad) MyClass < dynamicprops function obj = MyClass P = addprop(obj,'DynProp'); P.Transient = true; ... end end