Аннотация 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.