Giả sử tôi có một lớp học myClass < handle
. Từ số Mathworks Help page on clear
,MATLAB - chạy đối tượng destructor khi sử dụng 'rõ ràng'?
Xử lý đồ họa xóa xử lý không tự xóa đối tượng và cũng không xóa các đối tượng xóa biến lưu trữ tay cầm của chúng.
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
Vì vậy clear
ing một đối tượng xử lý không loại bỏ nó khỏi bộ nhớ, trừ khi tôi dứt khoát delete
nó lần đầu tiên ..
tôi đã chỉ định một destructor cho myClass
để làm sạch phù hợp và loại bỏ một số tài liệu tham khảo để nó; destructor này không được gọi là clear
. Có thể gọi đó là destructor khi đối tượng của tôi bị xóa?
EDIT: Tôi nên đề cập rằng trong khi delete
được tự động gọi với một clear
nếu không có tham chiếu đến đối tượng myClass
, tôi có một lớp khác, nói myOtherClass
với thuộc tính tham khảo myClass
, nói myOtherClass.a
. Ngoài ra còn có các thuộc tính khác trong myOtherClass
không thuộc tính của myClass
, nhưng chúng sẽ trống nếu myOtherClass.a
cũng trống. Hãy cho tôi biết nếu điều đó không có ý nghĩa, điều đó có thể hơi quá dài dòng.
Chắc chắn có các tham chiếu khác cho đối tượng kéo dài; một phần lý do tôi muốn chức năng này là bởi vì tôi loại bỏ các tham chiếu đó trong trình phá hủy của tôi. Tôi đã cập nhật OP với thông tin liên quan; nó có thể không có ý nghĩa nếu không có bối cảnh hoàn chỉnh, nhưng ngữ cảnh hoàn chỉnh không liên quan đến câu hỏi cụ thể .. –
Tôi đã có các vấn đề tương tự, đặc biệt khi tạo các phần tử GUI tùy chỉnh. Tôi không nghĩ rằng nó có thể buộc các destructor được gọi là khi bạn xóa các biến. Khi bạn lưu ý trong câu hỏi của mình, bạn có thể chỉ cần gọi phương thức xóa trên đối tượng của mình trước khi xóa nó. – hoogamaphone
Chỉ cần FYI, tôi nghĩ rằng đó là chức năng tốt mà destructor không được gọi là rõ ràng được sử dụng trong thiết bị đầu cuối khi sử dụng một gui với mã hướng đối tượng (mà tôi đã chủ yếu được tìm thấy là trường hợp). Điều này có nghĩa rằng nếu người dùng sử dụng 'clear' do tai nạn, gui của bạn sẽ không tắt máy, ngay cả khi tay cầm gui bị xóa khỏi vùng làm việc. Tuy nhiên, nếu người dùng gọi 'delete' trên tay cầm thì destructor sẽ vẫn chạy. – Justin