我正在编写一个OS X启动代理(实际上,它监视FSEvent)。 因此,它没有UI,也不是从捆绑软件开始的-只是一个程序。 相关文档和示例代码说明了在NSUserDefaults调用之间持久保留FS事件ID,并使用NSUserDefaults这样NSUserDefaults 这很显然是正确的事情。

偏好和设置编程指南”中的NSUserDefaults文档似乎很适合阅读。 这仅显示Application和Global域是持久性的,但是(很明显),只有Application域对于应用程序是可写的。 但是,应用程序域中的首选项是在ApplicationBundleIdentifier上键入的,而启动代理则不会。 因此,我很困惑这种代理应如何保持状态。

我只能想到的是, launchd作业中的Label可以充当ApplicationBundleIdentifier-至少具有正确的格式。 但是我在文档中看不到任何正确的提示。

显而易见的(unix-normal)方法是在$HOME写入一个点文件,但这大概不是可可方式。 Google搜索“ osx守护程序首选项”之类的内容时,不会显示任何有用的信息,否则,我的google-fu如今可惜缺少了。 谷歌搜索“设置应用程序捆绑标识符”也没有任何可能。 NSUserDefaults:persistentDomainForName看起来应该是相关的,但是我无法从其方法文档中确定其意图。

我在这里找到了一个似乎相关的问题,但是虽然非常接近,但它并未说明守护程序从何处获取其标识符。

我在Objective-C和Cocoa方面的经验有限,这意味着到现在为止,我怀疑自己在树错了树皮,但实际上不知道下一步该怎么看。

===============>>#1 票数:1 已采纳

即使在单个文件可执行文件中,您也可以(而且imo应该)有一个Info.plist。(请参阅http://www.red-sweater.com/blog/2083/the-power-of-plist

但是,NSUserDefaults值得怀疑。 从概念上讲,它用于用户设置,而不是内部状态。 但是,没有真正的理由不适合这样做,所以我可能会继续这样做。

  ask by Norman Gray translate from so

未解决问题?本站智能推荐:

关注微信公众号