Methodennamen ändern

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.