我使用Swift创建了一个Xcode项目,使用Objective-C创建了一个特权Helper工具。帮助工具在一个也在Objective-C中创建的项目中工作正常,但它似乎不适用于使用Swift创建的项目。
正在安装服务本身。我可以在/Library/PrivilegedHelperTools
目录中看到辅助二进制文件,它的权限似乎没问题(以及用户:root
)。使用launchctl
删除帮助程序会导致我的项目运行时重新安装该工具(按预期工作)但我无法调用帮助程序工具的任何方法。
既没有抛出任何异常也没有发生任何其他错误(至少似乎没有错误,因为控制台也没有显示任何错误)。
有人知道这可能是Swift的问题吗?因为在另一个项目中运行相同的帮助工具(用Objective-C编写)效果很好。
答案 0 :(得分:0)
我可以弄清楚问题是什么。帮助工具的main.m
包含main()
方法。我只是忘了用代码创建一个辅助类的实例并触发它的监听器:
#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
的实例。