Modifica dei nomi di metodi

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.