Adnotacja typu ObjectiveCName
Do każdej metody Java możesz dodać adnotację @ObjectiveCName, aby zmienić przetłumaczoną nazwę tej metody lub metody, która ją zastępuje. Na przykład:
@ObjectiveCName("setTimeWithHours:minutes:seconds:")
public void setTime(int hours, int minutes, int seconds) {
...
}
jest tłumaczony jako:
- (void)setTimeWithHours:(jint)hours
minutes:(jint)minutes
seconds:(jint)seconds;
Plik mapowania
Nazwy metod można zmieniać za pomocą flagi --mapping, która pobiera do użycia plik właściwości z mapowaniami. Każde mapowanie metod jest definiowane za pomocą pełnego podpisu metody Java dla klucza i wartości selektora Objective-C. Na przykład wiersz służący do mapowania Object.equals() na NSObject.isEqual: to:
java.lang.Object.equals(Ljava/lang/Object;)Z = isEqual:
Deklaracja po lewej stronie to pełny podpis metody zgodny ze specyfikacją maszyny wirtualnej Java. Definicja po prawej składa się z selektora iOS (tj. tego, co należy przekazać do @selector()). Metoda i jej mapowanie muszą mieć taką samą liczbę parametrów.
Inny przykład: ten wiersz jest odpowiednikiem przykładu z poprzedniej sekcji:
pkg.ClassName.setTime(III)V = setTimeWithHours:minutes:seconds:
Dodatkowe pliki mapowania można określić w wierszu poleceń za pomocą opcji --mapping.