سؤال

ومرحبا كل

وأريد أن جعل التطبيق واحد ل iPhone 2.2. * والإصدار 3.0. تم إهمال بعض الطرق في 2.2 * 3.0 في. (مثل UITableViewCell setText وsetLabel)

هل هناك أي وسيلة للتحقق من إصدار البرنامج الثابت يستخدم على اي فون ووضع طريقة مختلفة لاستخدام

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

المحلول

وسوف تحتاج إلى استخدام توجيهات ما قبل المعالج لالترجمة الشرطية مثل __IPHONE_3_0 وبناء اثنين التنفيذية منفصلة.

وعلى سبيل المثال:

 #ifdef __IPHONE_3_0
 // code specific to version 3
 #else
 // code specific to version 2
 #end

إذا كنت بحاجة إلى الكشف عن الإصدار في وقت التشغيل يمكنك استخدام [[UIDevice currentDevice] systemVersion]. تقوم بإرجاع سلسلة مع الإصدار الحالي من نظام التشغيل اي فون.

نصائح أخرى

وكما ذكرت في تعليق من قبل، تحقق: كيفية استهداف محددة آي فون الإصدار؟

وكما ذكر في الصفحات الأخرى المشار إليها، في حين يمكنك استخدام توجيهات ما قبل المعالج لتوليد طلبين من رمز قاعدة واحدة، وسوف لا تزال بحاجة اثنين من التطبيقات (واحد 2.x و واحد ل3.X)

وهناك توجيهات وقت الترجمة لا يمكن استخدامها لاتخاذ قرار وقت التشغيل.

وهناك المزيد من التفاصيل في الصفحات الأخرى.

والحل البديل، تحقق فقط باستخدام respondsToSelector. على سبيل المثال -

CGSize expectedLabelSize;
    if ([subTitle respondsToSelector:@selector(sizeWithAttributes:)])
    {
        expectedLabelSize = [subTitle sizeWithAttributes:@{NSFontAttributeName:subTitleLabel.font}];
    }else{
        expectedLabelSize = [subTitle sizeWithFont:subTitleLabel.font constrainedToSize:subTitleLabel.frame.size lineBreakMode:NSLineBreakByWordWrapping];
    }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top