При установке класса атрибут 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