שינוי שיטות

ביאור ObjectiveCName

אפשר להוסיף הערות לכל שיטת Java עם @ObjectiveCName כדי לשנות את השם המתורגם של ה-method הזה וכל שיטה שמחליפה אותה. לדוגמה:

@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 Virtual Machine מפרט. מימין הגדרה ידנית כוללת את הסלקטור ב-iOS (כלומר, מה שהייתם מעבירים אל @selector() ). לשיטה ולמיפוי שלה צריך להיות מספר זהה של פרמטרים.

דוגמה נוספת, השורה הזו מקבילה לדוגמה שבקטע הקודם:

pkg.ClassName.setTime(III)V = setTimeWithHours:minutes:seconds:

ניתן לציין קובצי מיפוי נוספים בשורת הפקודה, באמצעות האפשרות --mapping.