更改方法名称

ObjectiveCName 注解

您可以使用 @ObjectiveCName 为任何 Java 方法添加注解,以更改该方法的已转换名称以及替换该方法的任何方法。例如:

@ObjectiveCName("setTimeWithHours:minutes:seconds:")
public void setTime(int hours, int minutes, int seconds) {
  ...
}

已翻译为:

- (void)setTimeWithHours:(jint)hours
                 minutes:(jint)minutes
                 seconds:(jint)seconds;

映射文件

您可以使用 --mapping 标志更改方法名称,该标志接受包含要使用的映射的属性文件。每个方法映射使用键的完整 Java 方法签名和 Objective-C 选择器值进行定义。例如,将 Object.equals() 映射到 NSObject.isEqual: 的代码行是:

java.lang.Object.equals(Ljava/lang/Object;)Z = isEqual:

左侧声明是完整的方法签名,该签名由 Java 虚拟机规范定义。右侧的定义由 iOS 选择器(即您要传递给 @selector() 的内容)组成。该方法及其映射必须有相同数量的参数。

再举一个例子,此行等同于上一部分中的示例:

pkg.ClassName.setTime(III)V = setTimeWithHours:minutes:seconds:

您可以在命令行中使用 --mapping 选项指定其他映射文件。