Swift项目中的特权助手工具

时间:2014-12-03 09:44:23

标签: objective-c cocoa swift

我使用Swift创建了一个Xcode项目,使用Objective-C创建了一个特权Helper工具。帮助工具在一个也在Objective-C中创建的项目中工作正常,但它似乎不适用于使用Swift创建的项目。

正在安装服务本身。我可以在/Library/PrivilegedHelperTools目录中看到辅助二进制文件,它的权限似乎没问题(以及用户:root)。使用launchctl删除帮助程序会导致我的项目运行时重新安装该工具(按预期工作)但我无法调用帮助程序工具的任何方法。

既没有抛出任何异常也没有发生任何其他错误(至少似乎没有错误,因为控制台也没有显示任何错误)。

有人知道这可能是Swift的问题吗?因为在另一个项目中运行相同的帮助工具(用Objective-C编写)效果很好。

1 个答案:

答案 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];
}

_listenerNSXPCListener的实例。