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 选项指定其他映射文件。