gpt4 book ai didi

objective-c - 关闭文档时在 document.m 中调用的方法

转载 作者:行者123 更新时间:2023-12-03 16:54:43 24 4
gpt4 key购买 nike

我使用 - (void)windowControllerDidLoadNib:(NSWindowController *)aController 来查看文档何时加载到基于文档的应用程序中。但是我应该使用什么方法来查看文档何时被关闭呢?我想将文本框的内容保存到 NSUserDefaults,但我无法找到在文档关闭时调用的方法。我搜索了网络,也搜索了 xcode 中显示为提示的方法,但没有运气!任何帮助表示赞赏!

谢谢

最佳答案

我观察 NSApplicationWillTerminateNotification 并重写 [NSDocument close] 方法来执行文档清理([NSDocument close] 未被调用当应用程序终止时!)

MyDocument.h:

@interface MyDocument : NSDocument
{
BOOL _cleanedUp; // BOOL to avoid over-cleaning up
...
}

@end

MyDocument.m:

// Private Methods
@implementation MyDocument ()

- (void)_cleanup;

@end

@implementation MyDocument

- (id)init
{
self = [super init];
if (self != nil)
{
_cleanedUp = NO;

// Observe NSApplication close notification
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(_cleanup)
name:NSApplicationWillTerminateNotification
object:nil];
}
return self;
}

- (void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];

// I'm using ARC so there is nothing else to do here
}

- (void)_cleanup
{
if (!_cleanedUp)
{
_cleanedUp = YES;
logdbg(@"Cleaning-up");

// Do my clean-up
}
}

- (void)close
{
logdbg(@"Closing");

[self _cleanup];

[super close];
}

关于objective-c - 关闭文档时在 document.m 中调用的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14875045/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com