Objective c 构建后台应用程序作为启动守护程序的缺点?
在没有任何GUI的情况下构建只支持后台的COCOA应用程序并将其作为启动守护程序运行是否有任何缺点。这将使用:Objective c 构建后台应用程序作为启动守护程序的缺点?,objective-c,macos,cocoa,Objective C,Macos,Cocoa,在没有任何GUI的情况下构建只支持后台的COCOA应用程序并将其作为启动守护程序运行是否有任何缺点。这将使用: import <Foundation/Foundation.h> import <AppKit/AppKit.h> import <CoreData/CoreData.h> 导入 进口 进口 使用此工具而不构建objective-C命令行工具的主要优点是,它提供了隐式运行循环,其好处包括在应用程序启动或终止时定义良好的回调。这需要在命令行应用程序
import <Foundation/Foundation.h>
import <AppKit/AppKit.h>
import <CoreData/CoreData.h>
导入
进口
进口
使用此工具而不构建objective-C命令行工具的主要优点是,它提供了隐式运行循环,其好处包括在应用程序启动或终止时定义良好的回调。这需要在命令行应用程序中显式实现
是否存在诸如功能中断之类的缺点?守护进程的启动会被推迟吗?对于守护进程,使用任何非守护进程安全框架都有严重的缺点。发件人: 分层框架 大多数Mac OS X功能是由大型系统框架实现的。 这些框架中的许多都使用他们查找的基于马赫数的服务 使用引导服务。这可能会导致各种各样的问题,如果 您从引用错误引导的程序调用它们 命名空间 苹果解决这个问题的方法是分层:我们划分框架 并为每个层决定该层是否支持 全局引导命名空间中的操作。基本规则是 CoreServices及以下版本中的所有内容(包括系统、IOKit、系统 配置、基础)应在任何引导命名空间中工作 (这些是守护进程安全框架),而 CoreServices(包括ApplicationService、Carbon和AppKit) 需要每个会话引导命名空间的GUI 总之,具体建议如下:
- 编写守护程序时,仅链接到守护程序安全框架(请参阅)
- 编写GUI代理时,您可以链接到任何框架
- 有些框架在加载时失败。也就是说,框架有一个初始化例程,该例程假定它在每个会话中运行 上下文,否则将失败 这个问题在当前系统上很少见,因为大多数框架都是延迟初始化的
- 如果框架在加载时没有失败,那么在从该框架调用各种例程时仍然可能会遇到问题
- 例行公事可能会失败。例如,例程可能会以静默方式失败,或者将消息打印到stderr,或者可能返回 有意义的错误代码
- 例行公事可能会失败。例如,如果GUI框架是由守护进程运行的,则调用abort是非常常见的
- 即使例程的框架不是正式的守护进程安全的,它也可以工作
- 根据其输入参数,例程的行为可能会有所不同。例如,图像解压缩例程可能适用于 某些类型的图像和其他类型的图像失败
- 任何给定框架的行为,以及该框架内的例程,都可能随着版本的变化而变化
阅读整个技术说明以了解全部细节。如果只是背景,那么为什么需要Cocoa?因为我使用的是依赖于AppKit的NapplicationElegate,您不需要它。我写了一篇文章,它允许您在命令行实用程序中使用Objective-C/Foundation(可以很容易地修改为守护进程)。好的,但是在launchdaemon中使用NsapplicationLegate和Cocoa框架有什么缺点吗?因为它使事情变得非常精简和简单。这是主要的问题,你使用的是一个非常大的框架的一小部分。如果你想使用基础类,那么你需要一个运行循环(RunLoopController进来的地方),并且任何其他的代码< NSpoundation委托> <代码>都可以很容易地用你自己的代码来替换(见一些与RunLoopController捆绑在一起的例子来决定何时终止)。谢谢你的解释。您能指出列出了守护进程安全框架的文档吗?这是什么地方:(参见框架交叉引用)?它紧跟在我链接并引用的文档部分之后,但我将使用链接进行编辑。