我正在使用库STPrivilegedTask库,在http://www.sveinbjorn.org/STPrivilegedTask找到源以使用sudo权限运行NSTask。
这是我用来实例化STPrivilegedTask对象的代码,但是我遇到了语法错误:
STPrivilegedTask *task2 = [[STPrivilegedTask alloc] initWithLaunchPath: launchPath: arguments];
我收到“Receiver type STPrivilegedTask for instance方法没有声明方法...”错误。以上语法有效吗?
谢谢,
答案 0 :(得分:4)
不是Objective-C的专家,但如果我没错,你应该这样称呼它:
STPrivilegedTask *task2 = [[STPrivilegedTask alloc] initWithLaunchPath: launchPath
arguments:arguments];
(假设你的方法中的arguments
是你的NSArray)因为方法的声明是:
- (id)initWithLaunchPath: (NSString *)path arguments: (NSArray *)args;
^^^ Part of the method signature
而不是
- (id)initWithLaunchPath: (NSString *)path : (NSArray *)args;
这是您添加的链接中.m
文件的示例:
STPrivilegedTask *task = [[[STPrivilegedTask alloc] initWithLaunchPath: path arguments: args] autorelease];
答案 1 :(得分:0)
是的,这根本不是该方法的正确名称。
该方法的选择器为initWithLaunchPath:arguments:
。在调用方法时,可以在选择器中的冒号后面插入参数。因此,假设启动路径存储在名为path
的变量中,并且参数存储在名为programArguments
的变量中,您可以调用这样的方法:
[[STPrivilegedTask alloc] initWithLaunchPath:path arguments:programArguments];