我想将NSTask(NSTask,launchpath和args)传递给函数,但我确实需要一些语义帮助:
AppleDelegate.h文件:
- (void)doTask:(NSTask*)theTask :(NSArray*)arguments :(NSString*)launchPath;
AppleDelegate.m文件:
- (void)doTask:(NSTask*)theTask :(NSArray*)arguments :(NSString*)launchPath
{
self.currentTask = theTask;
// do currentTask alloc, set the launcpath and the args, pipe and more
}
以下是调用“doTask”的代码:
NSTask* runMyTask;
NSString *command = @"/usr/bin/hdiutil";
NSArray* taskArgs = [NSArray arrayWithObjects:@"info", @"/", nil];
// Here the error:
[self doTask:runMyTask, taskArgs, command]; // ARC Semantic issue no visible interface for AppleDelegate declares the selector 'doTask'..
选择器显示为未声明,但我认为我确实声明了... 是否可以做这样的事情,错误在哪里?
答案 0 :(得分:4)
你应该先做这样的教程,以了解Objective-C的基础知识:http://tryobjectivec.codeschool.com/
关于你的问题。您的方法称为doTask:::
。您可以像这样调用它:[self doTask:runMyTask :taskArgs :command];
。但是,这是不好的做法。您希望每个参数都反映在您的方法名称中。此外,您不希望您的方法名称以do
或does
开头。
所以,重命名你的方法:
- (void)runTask:(NSTask *)theTask arguments:(NSArray *)arguments launchPath:(NSString *)launchPath;
并称之为:
[self runTask:runMyTask arguments:taskArgs launchPath:command];
完成。