Вызов нескольких аргументов из target-c в applescript-objc

У меня есть сценарий applescript-objc со следующим методом: -

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

И я хочу вызвать этот метод из target-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];
}

пожалуйста, может кто-нибудь помочь.

С уважением, Энди.


person Andy    schedule 02.08.2013    source источник


Ответы (1)


Для начала 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_ 
person snickle    schedule 06.08.2013