3

我有一个 applescript-objc 脚本,其方法如下:-

on say_(phrase, userName)
    set whatToSay to "\"" & phrase & " " & userName & "\""
    say whatToSay
end say_

我想从objective-c调用这个方法,但似乎无法弄清楚如何调用具有多个参数的方法,我没有问题调用只有一个参数的方法,如下所示:-

@interface NSObject (ASHandlers)
- (void)say:(NSString *)phrase;
@end

@implementation AppDelegate

@synthesize window, sayTextField;

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification{
   scriptFile = NSClassFromString(@"Test");
   if ( !scriptFile ){
      // Handle errors here
   return;
   }
}

- (IBAction)say:(id)sender{
   NSString *phrase = [sayTextField stringValue];
   [scriptFile say:phrase];
}

请有人帮忙。

问候,安迪。

4

1 回答 1

2

首先,IBActions 必须具有以下签名:

-(void)action;
-(void)actionWithSender:(id)sender;
-(void)actionWithSender:(id)sender event:(UIEvent*)event;

因此,如果您正在寻找具有多个参数的 IBAction,那么您将无法获得它。

但是,要回答您的问题,在 Objective-C 中拥有一个具有多个参数的方法,它看起来像这样:

- say:(NSString *)textToSay withUserName:(NSString *)userName {
   ...
}

在 AppleScriptObjC 中,您将所有 Objective-C 方法参数移动到方法名称的开头,将冒号替换为下划线,并将参数放在括号中。

on say_withUserName_(textToSay, userName)
    ...
end say_withUserName_ 
于 2013-08-06T18:49:16.100 回答