Tôi có một ứng dụng dựa trên tài liệu và tôi đã phân loại là NSDocument
và cung cấp các phương thức cần thiết, nhưng tài liệu của tôi cần dọn dẹp rộng rãi (cần chạy các tác vụ bên ngoài, v.v.). Đâu là nơi tốt nhất để đặt cái này? Tôi đã thử một vài phương pháp khác nhau như:Nơi nào bạn đặt mã dọn dẹp cho các lớp con NSDocument?
close
close:
canCloseDocumentWithDelegate:shouldCloseSelector:contextInfo
dealloc
Nếu tôi đặt nó trong dealloc
, đôi khi nó được gọi và thời gian khác nó không (nhấn Command + Q dường như bỏ qua deallocation của tài liệu của tôi), nhưng nó là bắt buộc rằng mã này được gọi là không có fai thu hút (trừ khi chương trình kết thúc bất ngờ).
Tôi không nghĩ rằng điều này là hoàn toàn chính xác: bạn chỉ nên thực hiện dọn dẹp trong shouldCloseSelector vì shouldCloseSelector chỉ được gọi nếu tài liệu sẵn sàng đóng (ví dụ: lưu thành công). Phương thức canClose này được gọi là không cho biết rằng tài liệu sẽ thực sự bị đóng (ví dụ: lưu có thể thất bại). – Joel