Изменение имен методов

Аннотация ObjectiveCName

Вы можете аннотировать любой метод Java с помощью @ObjectiveCName , чтобы изменить переведенное имя этого метода и любого метода, который его переопределяет. Например:

@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.