title: Can't JSExport an Objective-C Method With More Than One Parameter?
body: <p>Consider this:</p>
  
  <pre><code>@protocol FooExport &lt;JSExport&gt;
  - (void)method1:(NSString *)param1;
  - (void)method2:(NSString *)param1 param2:(NSString *)param2;
  @end
  
  @interface Foo : NSObject &lt;FooExport&gt;
  @end
  
  @implementation Foo
  - (void)method1:(NSString *)param1 {
      NSLog(@"method1");
  }
  - (void)method2:(NSString *)param1 param2:(NSString *)param2 {
      NSLog(@"method2");
  }
  @end
  
  {
      sContext = [[JSContext alloc] init];
      if (sContext)
      {
          sContext[@"foo"] = [[Foo alloc] init];
          [sContext evaluateScript:@"foo.method1(\"foo\");"]; // method1 is called
          [sContext evaluateScript:@"foo.method2(\"foo\", \"bar\");"]; // method2 is NOT called
      }
  }
  </code></pre>
  
  <p>method1 is called just fine but method2 is never called.</p>
  
  <p>If I change method2 as follows:</p>
  
  <pre><code>@protocol FooExport &lt;JSExport&gt;
  - (void)method1:(NSString *)param1;
  - (void)method2:(NSString *)param1;
  @end
  </code></pre>
  
  <p>method2 is now called via [sContext evaluateScript:@"foo.method2(\"foo\", \"bar\");"]; (and I have to dig out the second parameter via JSContext.currentArguments).</p>
  
  <p>Similarly, if I change method2 as follows:</p>
  
  <p>@protocol FooExport 
  - (void)method1:(NSString *)param1;
  - (void)method2;
  @end</p>
  
  <p>method2 is again called via [sContext evaluateScript:@"foo.method2(\"foo\", \"bar\");"]; (and I have to dig out both parameters via JSContext.currentArguments).</p>
  
  <p>Is this by design?  The drawback of JSContext.currentArguments is that I have to deal with JSValues rather than the already converted objective-C types.</p>