باستخدام أجهزة استدعاءات وظيفة iPhone OS 3.0 بدلا من مكالمات الدالة 2.2 المحددة في 2.2 أجهزة

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

سؤال

إذا قمت بتعيين قاعدة + Active SDK من تطبيق iPhone إلى 3.0 وهدف النشر إلى 2.2، هل يمكنني استخدام الإصدارات الجديدة من الوظائف على 2.2 أجهزة؟

علي سبيل المثال، UITableViewCell يتطلب الآن صورة لتعيينها باستخدام [cell.imageView setImage:image], ، في حين في 2.2، كنت تسمون [cell setImage:image]. وبعد سوف تستخدم الجديد [cell.imageView setImage:image] تحطم على 2.2 الأجهزة؟

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

المحلول

لا يمكنك استدعاء OS 3.0 OS الولايات المتحدة في 2.2. يجب أن تتصرف الطريقة المنخفضة كالمعتاد على الأقل في نظام التشغيل 3. الاستهلاك في العديد من الحالات في نظام التشغيل، يعني فقط أن أبل توصي باستخدام طرق جديدة بدلا من ذلك؛ لكن هذه الطرق قد تختفي في المستقبل أيضا.

لديك خيارات قليلة:

  1. ببساطة تجاهل التحذيرات، طالما أن التطبيق والأساليب تعمل بالفعل على نظام التشغيل 3.0.
  2. احصل على فحص وقت التشغيل لتحديد إصدار نظام التشغيل، واستدعاء الطريقة المناسبة:

    double version = [[[UIDevice currentDevice] systemVersion] doubleValue];
    if (version >= 3.0) {
        [cell.imageView setImage:image];
    } else {
        [cell setImage:image];
    }
    

    أو الأفضل من ذلك:

    if ([cell respondsToSelector:@selector(imageView)]) {
         [cell.imageView setImage:image];
    } else {
         [cell setImage:image];
    }
    

    لاحظ أن وقت الترجمة تحقق، باستخدام ifdef التوجيهات لن تعمل

  3. إسقاط دعم OS 2.2. من المعقول تماما أن تستهدف فقط 3.0 وكذلك، حيث أن امتصاص 3.x مرتفع للغاية. في حالة تطبيقي الصغير، في ديسمبر كان لدي 27 مستخدمين على أنظمة ما قبل 3.0 من 2،058 مستخدم. وغني عن القول، هذا الخيار يقلل من حاجة الاختبار بكثير.

نصائح أخرى

لا، لا يمكنك استخدام مكالمات OS 3.0 على جهاز 2.x. سأفاجأت إذا كنت تستطيع حتى تثبيت تطبيق استهداف 3.0 على جهاز 2.x.

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