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