تعيين الاسم
تستخدم Java الحزم لتعريف مساحات الاسم بشكل غير رسمي؛ في حين أن الهدف C++ يحتوي على مساحات اسم C++،
الهدف ج ليس كذلك. للحفاظ على تفرد الاسم عند استخدام الفئات من حزم متعددة،
يضيف J2ObjC نسخة من الحزمة على شكل جمل إلى اسم النوع. على سبيل المثال:
تمت إعادة تسمية "java.util.Map
" إلى "JavaUtilMap
".
ويمكن أن تؤدي أسماء الحزم التي تظهر على شكل جمل إلى تقليل سهولة قراءة الرمز الذي تم إنشاؤه، خاصةً
بأسماء حزم طويلة. على سبيل المثال، تستخدم قالب Google
تعليق توضيحي بشأن الإصدار التجريبي
في حزمة com.google.common.annotations
، ويصعب تنفيذ ComGoogleCommonAnnotationsBeta
تمت قراءتها من Beta
.
تعريف بادئة الحزمة
اصطلاح الهدف-C لتحديد مساحات الاسم غير الرسمية هو استخدام بادئة مشتركة، عادةً ما تكون اثنتين
والأحرف الكبيرة. يستخدم iOS Foundation Foundation بروتوكول "NS" (من
NeXTStep)، على سبيل المثال. لتبسيط الإصدار التجريبي من Google Java
اسم، وبادئة مثل "GG" ستحسن إمكانية القراءة من خلال الإشارة إلى Beta
باسم GGBeta
.
يتيح J2ObjC للمطوّرين أن يحدّدوا بادئاتهم الخاصة لربطها بأسماء الحزم. يتم ذلك في
سطر الأوامر باستخدام --prefix package=prefix
. لتقصير جميع أسماء الفئات في
حزمة Beta
، "--prefix com.google.common.annotations=GG
" تنبؤي.
بادئة واحدة لكل حزمة.
تحديد بادئة واحدة لحزم متعددة
غالبًا ما تحتوي المكتبات الأصغر على أسماء فئة Java غير متعارضة، ولذلك يمكن مشاركة بادئة واحدة
باستخدام مواصفات حزمة بأحرف بدل. على سبيل المثال، يمكن أن تشترك جميع حزم Joda-Time في البادئة JT نفسها، باستخدام --prefix
'org.joda.time.*=JT'
. حرف البدل الوحيد المسموح به هو "*"، والذي يتطابق مع
تفعله واجهة سطر الأوامر مع أسماء الملفات.
تحديد بادئات حزم متعددة
لتبسيط تحديد عدة تعريفات بادئة، يمكن استخدام ملف الخصائص مع
"--prefixes
ملف" الوسيطة:
cat prefixes.properties
com.google.common.annotations: GG com.google.common.base: GG # While GG can be used for all packages, let's mix it up. com.google.common.collect: GC com.google.common.io: GIO # A prefix can be more than two characters, com.google.common.net: GuavaNet # a lot more! ...
j2objc --prefixes prefixes.properties <args>
الفئات المسبوقة ببادئة في وقت التشغيل
نظرًا لأن التطبيق النهائي يحتوي على فئات ذات بادئات، لا يمكن تحديد موقعها باستخدام لغة Java الأصلية
اسم الفئة افتراضيًا. ومع ذلك، إذا كان التطبيق يحتوي على ملف باسم prefixes.properties في مورده
مع البادئات المستخدمة في الترجمة، سيعثر Class.forName(javaName)
على الفئة التي تم تعيينها.
لإضافة السمة prefixes.properties المذكورة أعلاه إلى تطبيق iOS في Xcode، افتح مراحل إنشاء هدف الإصدار. وقم بتوسيع قسم نسخ موارد الحزمة، ثم أضف الملف prefixes.properties إلى هذه القائمة. وتحتوي موارد Java على مزيد من المعلومات حول كيفية ربط مفاهيم موارد Java بنظام التشغيل iOS الموارد.