声明具有多个参数的Objective-C方法

声明具有多个参数的Objective-C方法,objective-c,methods,syntax,Objective C,Methods,Syntax,我想将NSTask NSTask、launchpath和args传递给函数,但我确实需要语义方面的帮助: AppleDelegate.h文件: - (void)doTask:(NSTask*)theTask :(NSArray*)arguments :(NSString*)launchPath; AppleDelegate.m文件: - (void)doTask:(NSTask*)theTask :(NSArray*)arguments :(NSString*)launchPath {

我想将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'..
选择器显示为未声明,但我想我已声明了它。。。
有可能这样做吗?错误在哪里?

你应该先做一个这样的教程来了解Objective-C的基本知识:

关于你的问题。您的方法名为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];

完成。

您应该先完成类似的教程,以了解Objective-C的基本知识:

关于你的问题。您的方法名为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];
已完成。

可能的副本可能的副本