10.5 قاعدة SDK، 10.4 النشر: كيفية تنفيذ الأساليب المفقودة

StackOverflow https://stackoverflow.com/questions/914447

سؤال

لدي مشروع يستهدف كل من نظام التشغيل Mac OS X 10.4 و 10.5، حيث 10.5 هو SDK الأساسي.

بعض الطرق مثل -[NSString stringByReplacingOccurrencesOfString:withString] غير متوفرة في 10.4. يمكنني فقط تنفيذ الوظيفة باليد. سيكون هناك خيار آخر هو تنفيذ الطريقة كفاصل فئة، ولكن من شأنها أن تعبث بتنفيذ 10.5 وهذا شيء أود تجنبه.

إذن كيف يمكنني تنفيذ هذه الأساليب في 10.4 دون العبث 10.5 وبهذه الطريقة يمكنني إخراج التنفيذ بسهولة عندما قررت التوقف عن دعم 10.4؟

هل كانت مفيدة؟

المحلول

أعتقد أنك يجب أن تستخدم +load و +initialize ل تحميل طريقة في وقت التشغيل إذا لم تكن الطريقة موجودة بالفعل.

نصائح أخرى

if ([myString respondsToSelector: @selector(stringByReplacingOccurrencesOfString:withString:)])
{
  // 10.5 implementation
}
else
{
  // 10.4 implementation
}

استخدم فئة، ولكن ضع علامة على اسم الطريقة؛ علي سبيل المثال، stringByReplacingOccurrencesOfString_TigerCompatible:. وبعد في التنفيذ، اتصل إما تنفيذ ليوبارد أو بنفسك.

عندما تذهب ليوبارد فقط، قم بعمل مشروع بحث عن "Tigercompatible"، ثم قم بإحساء كل هذه الأساليب وغيرها من مواقع الاتصال الخاصة بها.

ضع كل التنفيذ المفقود في الفئات في حزمة يتم تحميلها عند بدء التشغيل في Main () إذا كان يعمل تحت النمر.

ماذا عن استخدام ماكرو Preprocessor C لإدراج الأساليب ذات الصلة إذا تم بناؤه لمدة 10.4؟ ربما حاول القيام بشيء من هذا القبيل في فئة، بحيث يتم تضمين هذه الأساليب غير موجودة في 10.4 فقط إذا تم بناؤها لمدة 10.4؟

#if defined(MAC_OS_X_VERSION_10_4) && MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4
// Put your implementations of the methods here
#endif

هل تحتاج إلى دعم 10.4؟ إذا كنت تستخدم 10.5 طريقة فقط في الأجزاء الأساسية من تطبيقك، فقد يكون ذلك الوقت للنظر في الذهاب إلى 10.5 فقط.

على أي حال، مع المثال المحدد المذكور أعلاه، أقترح الابتعاد عن ذلك وإنشاء نسخة قابلة للتغيير من سلسلةك حتى تتمكن من استخدام الطريقة المماثلة على nsmutablestring التي تعمل في 10.4

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top