Установка 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