Ale*_*lex 5 cocoa objective-c swift
我已经使用Swift创建了一个Xcode项目,并使用了Objective-C创建了一个特权助手工具。helper工具在也是在Objective-C中创建的项目中可以很好地工作,但是在用Swift创建的项目中似乎不起作用。
服务本身正在安装。我可以在/Library/PrivilegedHelperTools目录中看到辅助二进制文件,并且它的权限似乎还可以(以及用户:)root。使用项目删除帮助程序会launchctl导致在我的项目运行时(按预期方式运行)重新安装该工具,但是我无法调用该帮助程序工具的任何方法。
既不会引发任何异常,也不会发生任何其他错误(至少似乎没有错误,因为控制台也什么也不显示)。
有人知道这可能与Swift无关吗?因为在另一个项目(用Objective-C编写)中运行相同的帮助工具非常有效。
我能找出问题所在。辅助工具有一个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;
}
Run Code Online (Sandbox Code Playgroud)
此代码导致Helper实例在无限循环中运行,等待传入连接(来自Helper.h):
- (void)run
{
[_listener resume];
[[NSRunLoop currentRunLoop] run];
}
Run Code Online (Sandbox Code Playgroud)
_listener是 的一个实例NSXPCListener。