0

我想知道初始化 xpc 服务的上下文是否有任何限制。

这是我目前从 main() 初始化我的 xpc 服务的方式,它工作得很好。

  listener_ = [[NSXPCListener alloc] 
     initWithMachServiceName:@"com.bla.bla"]; 
  xpcService *delegate = [xpcService new];
  listener_.delegate = delegate;
  [listener_ resume];
  [[NSRunLoop mainRunLoop] run];

但是,当从不同的方法(主)/线程(主线程)调用它时......它不接受远程调用,即使侦听器已正确初始化。

我什至尝试使用以下包装器包装此代码以在主线程上运行

dispatch_sync(dispatch_get_main_queue(), ^{
  listener_ = [[NSXPCListener alloc] 
     initWithMachServiceName:@"com.bla.bla"]; 
  xpcService *delegate = [xpcService new];
  listener_.delegate = delegate;
  [listener_ resume];
}

在上面的示例中,[[NSRunLoop mainRunLoop] run];从 main 方法调用 。

所以我的问题是使 XPC 工作的要求是什么.. 是否必须从 main 方法调用它?

4

0 回答 0