클래스가 있다고 가정하면 myClass < handle
입니다. Mathworks Help page on clear
에서MATLAB - 'clear'를 사용할 때 객체 소멸자를 실행 하시겠습니까?
핸들 그래픽 핸들을 지우지 않아도 개체가 제거되지 않으며 개체를 삭제해도 핸들이 저장된 변수가 제거되지 않습니다. 내가 처음으로 명시 적으로
delete
을 ..내가 제대로 정리를하고 그것을 몇 가지 참조를 제거하는
myClass
에 대한 소멸자를 지정하지 않는 한
hf = figure; % Creates figure object, stores handle in variable hf
delete(hf) % Removes figure object, but not the variable hf
clear hf % Removes hf from the workspace; figure could still exist
그래서 clear
핸들 객체를 보내고하는 것은 메모리에서 제거되지 않습니다; 이 소멸자는 clear
에 호출되지 않습니다. 내 객체가 지워질 때 소멸자를 호출 할 수 있습니까?
편집 : 나는 myClass
객체에 대한 참조가없는 경우 delete
가 자동으로 clear
호출하는 동안, 나는 다른 클래스를 가지고 myClass
참조 속성 myOtherClass
말을 언급해야, myOtherClass.a
을 말한다. myOtherClass
에는 속성이 myClass
이 아니지만 myOtherClass.a
도 비어 있으면 비어 있어야합니다. 그게 의미가 없다면 나에게 알려줘. 그건 너무 어리 석었을거야.
느린 개체에 대한 다른 참조가 확실히 있습니다. 내가 소멸자에서 참조를 없애기 때문에이 기능을 사용하고자하는 이유 중 일부입니다. 관련 정보로 OP를 업데이트했습니다. 완전한 컨텍스트 없이는 의미가 없을 수도 있지만 전체 컨텍스트는 특히 질문과 관련이 없습니다. –
특히 사용자 지정 GUI 요소를 만들 때 비슷한 문제가있었습니다. 변수를 지울 때 소멸자가 호출되도록 할 수 있다고 생각하지 않습니다. 귀하의 질문에, 당신은 단순히 지우기 전에 개체에 delete 메서드를 호출 할 수 있습니다. – hoogamaphone
참고로, 소멸자가 명확하게 호출되지 않는 좋은 기능은 객체 지향 코드가있는 gui를 사용할 때 터미널에서 사용된다고 생각합니다. 즉, 사용자가 실수로 'clear'를 사용하면 gui에 대한 핸들이 작업 영역에서 지워지더라도 GUI가 종료되지 않습니다. 그러나 사용자가 핸들에서'delete'를 호출하면 소멸자는 여전히 실행됩니다. – Justin