我使用 Swift 创建了一个 Xcode 项目,并使用 Objective-C 创建了一个特权 Helper 工具。辅助工具在同样在 Objective-C 中创建的项目中运行良好,但在使用 Swift 创建的项目中似乎不起作用。
正在安装服务本身。我可以在 /Library/PrivilegedHelperTools
目录中看到帮助程序二进制文件,它的权限似乎没问题(以及用户:root
)。使用 launchctl
删除帮助程序会导致在我的项目运行时重新安装该工具(按预期工作),但我无法调用帮助程序工具的任何方法。
既没有抛出任何异常,也不会发生任何其他错误(至少似乎没有错误,因为控制台也没有显示任何内容)。
有谁知道这是否可能是 Swift 的问题?因为在另一个项目(用Objective-C编写)中运行相同的辅助工具效果很好。
我可以弄清楚问题是什么。帮助程序工具具有包含main()
方法的main.m
。我只是忘了用代码填充它,这些代码创建我的帮助程序类的实例并触发其侦听器:
#import <Foundation/Foundation.h>
#import "Helper.h"
int main(int argc, const char * argv[])
{
@autoreleasepool
{
Helper *helper = [[Helper alloc] init];
[helper run];
}
return EXIT_FAILURE;
}
此代码导致Helper
实例在无限循环中运行,等待传入连接(来自Helper.h
):
- (void)run
{
[_listener resume];
[[NSRunLoop currentRunLoop] run];
}
_listener
是NSXPCListener
的一个实例。