Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 有没有办法让Finder无法复制文件资源分叉?_Objective C_Cocoa_Icons_Macos Carbon_Nsworkspace - Fatal编程技术网

Objective c 有没有办法让Finder无法复制文件资源分叉?

Objective c 有没有办法让Finder无法复制文件资源分叉?,objective-c,cocoa,icons,macos-carbon,nsworkspace,Objective C,Cocoa,Icons,Macos Carbon,Nsworkspace,有没有办法使资源分叉不可压缩?特别是,我正在通过NSWorkspace通过–setIcon:forFile:options:为特定目录中包含的文件设置一个自定义徽章图标,我希望这些徽章在文件被复制到文件夹外时立即丢失。AFAIK没有简单/标准的方法可以做到这一点 如果我们讨论的文件系统是基于Mac本身的本地文件系统,那么您可以通过实现守护进程(以高权限运行)来实现所需的功能。这个守护进程基本上将自己集成到操作系统中(通过FSEvent和kqueue)——通过这种方式,它可以监视任何文件活动,并相

有没有办法使资源分叉不可压缩?特别是,我正在通过NSWorkspace通过
–setIcon:forFile:options:
为特定目录中包含的文件设置一个自定义徽章图标,我希望这些徽章在文件被复制到文件夹外时立即丢失。

AFAIK没有简单/标准的方法可以做到这一点

如果我们讨论的文件系统是基于Mac本身的本地文件系统,那么您可以通过实现守护进程(以高权限运行)来实现所需的功能。这个守护进程基本上将自己集成到操作系统中(通过FSEvent和kqueue)——通过这种方式,它可以监视任何文件活动,并相应地采取行动(删除标记或类似内容)

有关如何构建这种机制的一些源代码,您可以查看和


如果你想在服务器端实现这一点,有几种机制——但它们完全依赖于服务器技术(通知和/或挂接机制)。

对于Dropbox端,它们看起来像是将mach star代码注入Finder进程。如果可能的话,这是我宁愿避免的事情。Dropbox没有在Leopard上使用代码注入。我正在寻找Leopard的解决方案。@jennifer我不确定我是否理解,你首先问如何使资源分叉不可压缩,然后你继续谈论Dropbox获得杀戮信号。。。连接在哪里?Dropbox引用是什么意思?@Yahia Dropbox还在leopard os中使用自定义图标,当我们退出Dropbox应用程序时,他们正在删除自定义图标。我认为这是一个非常好的方法,尽管我想知道当文件层次结构太深时,kqueue方法是否太重。我的意思是,您必须知道文件被复制到何处并从中删除徽章。@AlessandroDiaferia我同意这可能会对性能产生影响,但这是我所知道的唯一方法,除了在运行时将一些代码注入操作系统进程(我不建议这样做)。至于如何知道它被复制到哪里,可能有一个“根本的解决方案”-您分配的徽章是唯一的,您可以识别,因此您可以在文件创建时检查它是否有此徽章,如果它在“源文件夹”之外,则将其删除。@AlessandroDiaferia基本上是的。。。如果您与Spotlight服务集成(有一些方法可以连接到其中),您可能会降低性能影响,因为它们已经获得了您需要的通知……虽然这是一种更干净的方法,但我认为在这一点上,快速插入Finder代码会更好。至少整个系统感觉不那么沉重。