gpt4 book ai didi

objective-c - SCEvents 在某些方法中不起作用?

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

[注:标题可能不太准确,我不知道还能如何表达]由于某种原因 NSFileHandle 的 readInBackground 不起作用,所以我求助于 SCEvents,它是 Mac OS X 的 FSEvents API 的 Cocoa 包装器。我有一个名为“EventListener”的单独类,用于处理所有 SCEvents 内容。

它有以下方法:

- (void)setupEventlistener
{
SCEvents *events = [SCEvents sharedPathWatcher];

[events setDelegate:self];

NSMutableArray *paths = [NSMutableArray arrayWithObject:NSHomeDirectory()];
NSMutableArray *excludePaths = [NSMutableArray arrayWithObject:[NSHomeDirectory() stringByAppendingString:@"/Downloads"]];

[events setExcludedPaths:excludePaths];
[events startWatchingPaths:paths];
}
- (void)pathWatcher:(SCEvents *)pathWatcher eventOccurred:(SCEvent *)event
{
NSLog(@"%@", event);
}

(我直接从 SCEvents 示例应用程序获取这些方法,一旦我让它工作,我计划根据自己的目的更改它)

然后在我的主应用程序委托(delegate)类的 applicationDidFinishLaunching 方法中,我有以下内容:

EventListener *events = [[EventListener alloc] init];
[events setupEventlistener];

这会初始化监听器。现在,在分配它并调用 setupEventListener 类之后,一切正常。主文件夹内的更改将按原样记录到调试器控制台中。我有另一种名为 format: 的方法,它运行一些 shell 脚本。问题是,当格式化方法运行时,事件监听器停止工作。对主文件夹的任何更改都不会记录。此问题仅发生在 format: 方法中。对于所有其他方法,事件监听器都可以正常工作。

我不确定问题出在哪里。谢谢

最佳答案

我有另一种名为 format: 的方法,它运行一些 shell 脚本。问题是,当格式化方法运行时,事件监听器停止工作。对主文件夹的任何更改都不会记录。

这可能与 -readInBackgroundAndNotify: 不起作用的原因相同。

具体来说,除非您让事件循环(通知所针对的线程的)运行,否则通知机制通常不起作用。在某些情况下,如果您阻塞的时间足够长,通知就会丢失。

关于objective-c - SCEvents 在某些方法中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1329381/

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