Swift 项目中的特权助手工具



我使用 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];
}

_listenerNSXPCListener的一个实例。

相关内容

最新更新