Основная причина изменения сохранения и процесса загрузки должна поддержать обратную и прямую совместимость классов. Рассмотрите изменение сохранения и загрузите процесс когда вы:
Переименуйте класс
Удалите свойства
Задайте циклическую ссылку объектов указателя, где порядок инициализации важен
Должен вызвать конструктора с аргументами и, поэтому, не может использовать ConstructOnLoad
Самый универсальный метод для изменения сохранения и процесса загрузки должен реализовать loadobj
, и при необходимости, saveobj
методы для вашего класса. MATLAB® выполняет эти методы, когда вы вызываете save
или load
на объекте класса.
save
вызовы функции ваш класс saveobj
метод прежде, чем выполнить операцию сохранения. save
функция затем сохраняет значение, возвращенное saveobj
метод. Можно использовать saveobj
возвратить модифицированный объект или struct
это содержит значения свойств.
load
вызывает ваш класс loadobj
метод после загрузки объекта. load
функционируйте загружает значение, возвращенное loadobj
метод в рабочую область. loadobj
метод может изменить объектное загружение или может восстановить объект из данных, сохраненных классом saveobj
метод.
saveobj
и loadobj
МетодыРеализуйте saveobj
метод, который изменяет объект, являющийся сохраненным, затем реализует loadobj
метод, чтобы возвратить объект в правильное состояние при загрузке его.
Реализуйте loadobj
метод как Static
метод, потому что MATLAB может вызвать loadobj
метод с struct
вместо объекта класса.
Реализуйте saveobj
метод как обычный метод (то есть, вызывая его требует экземпляра класса).
MATLAB сохраняет имя класса объекта так, чтобы load
может определить который loadobj
метод, чтобы вызвать в случаях, где ваш saveobj
метод сохраняет только данные объектов в структуре. Поэтому класс должен быть доступен для MATLAB, когда вы загружаете объект.
Используйте loadobj
метод, когда:
Определение класса изменилось, поскольку объект был сохранен, требуя, чтобы вы изменили объект перед загрузкой.
saveobj
метод изменил объект во время операции сохранения, возможно сохранив данные в struct
. Реализуйте loadobj
метод, чтобы восстановить объект от выхода saveobj
.
Когда вы решите изменить сохранение по умолчанию и процесс загрузки, помните о следующих моментах:
Если загрузка любого значения свойства из MAT-файла производит ошибку, load
передает struct
к loadobj
. struct
имена полей соответствуют именам свойства, извлеченным из файла.
loadobj
должен всегда мочь принять struct
как введено и возвращают объект, даже если нет никакого saveobj
или saveobj
не возвращает struct
.
Если saveobj
возвращает struct
, затем load
всегда передачи, что struct
к loadobj
.
Объекты подкласса наследовали суперкласс loadobj
и saveobj
методы. Поэтому, если вы не реализуете loadobj
или saveobj
метод в подклассе, MATLAB вызывает только унаследованные методы.
Если суперкласс реализует loadobj
или saveobj
метод, затем подкласс может также реализовать loadobj
или saveobj
метод, который вызывает методы суперкласса. Для получения дополнительной информации смотрите, Избавляют и Объекты Загрузки от Иерархий классов.
load
функция не вызывает конструктора по умолчанию. Для получения дополнительной информации смотрите, Инициализируют Объекты При Загрузке.