小编pat*_*ick的帖子

FSEvents - 获取执行操作的进程的PID

在OS X上,使用FSEvents API,我可以轻松获取感兴趣的路径的文件和目录通知(创建,删除等).但是,我想知道是否有任何方法可以获取执行操作的进程的PID或名称(例如,创建文件).我知道如果您实时监视文件系统,可以获取此信息(请参阅:fs_logger),但我更愿意使用,FSEvents因为它允许您确切地指定要监视的路径以及以回调方式工作的路径(如此可能减少CPU密集度?).

filesystems macos fsevents

11
推荐指数
1
解决办法
334
查看次数

/ X卷的OS X FinderSync'失败'

我正在创建一个简单的OS X FinderSync,它将菜单项添加到所有文件的控件/右键单击菜单中:

[FIFinderSyncController defaultController].directoryURLs = [NSSet setWithObject:[NSURL fileURLWithPath:@"/"]];
Run Code Online (Sandbox Code Playgroud)

对于所有文件都很好(菜单项出现等),除了 Oddly中的那些文件,/Volumes如果我手动创建一个目录/Volumes并在那里添加一些文件,当我右键单击时会出现FinderSync的菜单项.但是对于任何已安装的卷中的任何文件(即来自已安装的.dmg),它都会失败:不显示任何菜单项.

directoryURLs类似的情况下直接指定已安装的卷失败:

[FIFinderSyncController defaultController].directoryURLs = [NSSet setWithObject:[NSURL fileURLWithPath:@"/Volumes/SomeMountedDMG"]];
Run Code Online (Sandbox Code Playgroud)

似乎其他人有类似的问题,所以这可能是一个已知的错误/限制?

operating-system objective-c findersync

9
推荐指数
1
解决办法
888
查看次数

在NSStatusBar中自动显示NSPopover

我试图让NSPopover自动显示在状态栏中的图标下方,这是用户第一次安装我的应用程序.像谷歌驱动器一样:

在此输入图像描述

我正在使用提到这个答案的确切代码,它可以完美地用于手动显示弹出窗口(例如,在用户单击时).为了让popover自动显示,我在方法的末尾添加了以下行:调用到现在,这有时完美地工作(弹出窗口出现在状态栏中的图标的正下方),但其他时候弹出窗口显示在我屏幕的左下角.如果我等待几秒然后执行该行代码(例如,通过),它的工作更加一致.但仍然偶尔失败并显示我的屏幕底部.applicationDidFinishLaunching[self.controller menuletClicked:1]showRelativeToRect...dispatch_after...

这表明某些东西没有"准备好"?(正如这个问题所示) - 但我检查过popover对象不是nil,并且矩形的边界看起来很好.我还添加了一个loadView来尝试强制加载,但似乎没有任何效果!

让NSPopover自动显示的正确方法是什么?或者如何确保它出现在正确的位置?谢谢!!

macos objective-c nspopover

5
推荐指数
0
解决办法
177
查看次数