ObjectiveCName-Annotation
Sie können jede Java-Methode mit @ObjectiveCName annotieren, um den übersetzten Namen dieser Methode und jede Methode, die sie überschreibt, zu ändern. Beispiel:
@ObjectiveCName("setTimeWithHours:minutes:seconds:")
public void setTime(int hours, int minutes, int seconds) {
...
}
wird übersetzt als:
- (void)setTimeWithHours:(jint)hours
minutes:(jint)minutes
seconds:(jint)seconds;
Zuordnungsdatei
Methodennamen können mit dem Flag --mapping geändert werden, für das eine Attributdatei mit den zu verwendenden Zuordnungen verwendet wird. Jede Methodenzuordnung wird mit der vollständigen Java-Methodensignatur für den Schlüssel und einem Objective-C-Selektorwert definiert. Die Zeile zur Zuordnung von „Object.equals()“ zu „NSObject.isEqual“ lautet beispielsweise:
java.lang.Object.equals(Ljava/lang/Object;)Z = isEqual:
Die linke Deklaration ist die vollständige Methodensignatur, gemäß der Java Virtual Machine-Spezifikation. Die rechte Definition besteht aus dem iOS-Selektor (also dem, was Sie an @selector() übergeben würden). Die Methode und ihre Zuordnung müssen die gleiche Anzahl von Parametern haben.
Als weiteres Beispiel entspricht diese Zeile dem Beispiel im vorherigen Abschnitt:
pkg.ClassName.setTime(III)V = setTimeWithHours:minutes:seconds:
Mit der Option „--mapping“ können Sie weitere Zuordnungsdateien in der Befehlszeile angeben.