ايفون - مشروط مترجم
-
19-09-2019 - |
سؤال
سؤالين:
هذا الرمز
#ifdef __IPHONE_3_0
// iPhone 3.0 specific stuff
#else
// iPhone 2.2 specific stuff
#endif
يجمع رموز محددة لإصدارات محددة من iPhone. كيف يمكن تحويل هذا إلى ترجمة لمجموعة من الأجهزة؟ على سبيل المثال: إذا كان إصدار iPhone <3.1 أو إذا كان الإصدار> = 3.2، وهكذا ...
2) أين يمكنني الحصول على قائمة من جميع الشرطيات المسموح بها بواسطة Xcode؟
شكرا على اي مساعدة.
المحلول
تم العثور على تلك المعرفة في Availability.h
, يقع داخل كل ما تستخدمه SDK. على سبيل المثال، يمكنك العثور على نسخة للمحاكاة 3.0 في
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/usr/include/Availability.h
كملاحظة، من السهل البحث عن الثوابت __IPHONE_3_0
من خلال إبرازها، انقر بزر الماوس الأيمن، واختيار "الانتقال إلى التعريف" من القائمة المنبثقة.
في Availability.h
, ، يصف الرأس نفسه بالتفصيل كيفية ترجمة بشكل انتقائي للإصدارات المختلفة. على سبيل المثال، لتجميع التعليمات البرمجية فقط إذا كان إصدار iPhone OS أكبر من 3.0، يمكنك استخدامه
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_3_0
// Your code here
#endif
لاحظ أن هذا لتحديد ما يجب تضمينه في وقت الترجمة، وليس لتمكين التعليمات البرمجية بشكل انتقائي بناء على إصدار نظام التشغيل الذي يعمل عليه التطبيق.