Annotazione ObjectiveCName
Puoi annotare qualsiasi metodo Java con @ObjectiveCName per modificare il nome tradotto di quel metodo e qualsiasi metodo che lo sostituisca. Ad esempio:
@ObjectiveCName("setTimeWithHours:minutes:seconds:")
public void setTime(int hours, int minutes, int seconds) {
...
}
viene tradotto come:
- (void)setTimeWithHours:(jint)hours
minutes:(jint)minutes
seconds:(jint)seconds;
File di mappatura
I nomi dei metodi possono essere modificati utilizzando il flag --mapping, che acquisisce un file delle proprietà con le mappature da utilizzare. La mappatura di ogni metodo viene definita con la firma completa del metodo Java per la chiave e un valore del selettore Objective-C. Ad esempio, la riga per mappare Object.equals() a NSObject.isEqual: è:
java.lang.Object.equals(Ljava/lang/Object;)Z = isEqual:
La dichiarazione a sinistra è la firma del metodo completo, come definita dalla specifica Java Virtual Machine. La definizione a destra è composta dal selettore iOS (ovvero ciò che passerai a @selector()). Il metodo e la relativa mappatura devono avere lo stesso numero di parametri.
Come ulteriore esempio, questa riga è equivalente all'esempio della sezione precedente:
pkg.ClassName.setTime(III)V = setTimeWithHours:minutes:seconds:
È possibile specificare altri file di mapping nella riga di comando utilizzando l'opzione --mapping.