gpt4 book ai didi

objective-c - 如何在Cocoa中实现VDKQueue来监控文件?

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

我环顾四周,看起来 VDKQueue 是 UKKQueue 的更现代版本,但我在实现它时遇到了麻烦(我还不擅长 Cocoa)。到目前为止,我已经有了这个,但我对我还需要什么感到有点茫然(或者这是否正确):

VDKQueue *kqueue = [[VDKQueue alloc] init];
[kqueue addPath:path notifyingAbout:VDKQueueNotifyAboutWrite];
[kqueue setDelegate:self];

这个答案似乎很好地概述了如何设置它,我只是不太明白。现在我已经初始化了 VDKQueue,如何设置修改文件时会发生什么?

Cocoa Monitor a file for modifications

来自其他答案:

Implementation was pretty straightforward:

  • let your controller be the VDKQueueDelegate; (I added <VDKQueueDelegate> to my AppDelegate.h)
  • declare a VDKQueue* ivar / property; (Is this VDKQueue *kqueue = [[VDKQueue alloc] init];?)
  • setup delegate method VDKQueue:receivedNotification:forPath:; (How do I do this?)
  • init the queue and set its delegate to the controller itself; (is this this [kqueue setDelegate:self];?)
  • add resources to watch with addPath:notifyingAbout:. (Added this line [kqueue addPath:path notifyingAbout:VDKQueueNotifyAboutWrite];)

Then just do your business in the delegate method.

可能是代码中的委托(delegate)方法?

//
// Or, instead of subscribing to notifications, you can specify a delegate and implement this method to respond to kQueue events.
// Note the required statement! For speed, this class does not check to make sure the delegate implements this method. (When I say "required" I mean it!)
//
@class VDKQueue;
@protocol VDKQueueDelegate <NSObject>
@required

-(void) VDKQueue:(VDKQueue *)queue receivedNotification:(NSString*)noteName forPath:(NSString*)fpath;

@end

最佳答案

有几种方法,它们都记录在 the VDKQueue header file 中.

方法A:通知

Add an observerthe NSWorkspace's notification center对于该头文件中列出的各种 VDKQueue 通知。当 VDKQueue 发送您正在观察的通知时,通知中心将调用您的 block (或者向您自己的观察者对象发送消息,如果您使用较旧但仍然完全有效的方法)。

方法B:委托(delegate)

您已经将自己设置为代理人,这是步骤之一。

第 1 步是声明您遵守 VDKQueueDelegate协议(protocol)。如果您还没有这样做,您应该会收到有关它的警告,因为 setDelegate:需要一个符合协议(protocol)的对象。

第 2 步是通过实际实现协议(protocol)的所有必需方法来履行该 promise 。目前只有一个。

第 3 步是将您自己设置为代理人。

VDKQueue:receivedNotification:forPath: 的实现中,这是您在步骤 2 中实现的方法,您可以做任何您想做的事情来对文件刚刚发生的事情使用react。

关于objective-c - 如何在Cocoa中实现VDKQueue来监控文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14298107/

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