Zmiana nazw metod

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.