দ্রুত উত্তর ...
সুইফট ২.০ হিসাবে, আপনি #available
একটি if
বা guard
সুরক্ষা কোড ব্যবহার করতে পারেন যা কেবলমাত্র নির্দিষ্ট সিস্টেমে চালানো উচিত।
if #available(iOS 9, *) {}
অবজেক্টিভ-সি-তে আপনাকে সিস্টেমের সংস্করণটি পরীক্ষা করতে হবে এবং তুলনা করতে হবে।
[[NSProcessInfo processInfo] operatingSystemVersion]
আইওএস 8 এবং তারপরে।
এক্সকোড 9 হিসাবে:
if (@available(iOS 9, *)) {}
পুরো উত্তর ...
অবজেক্টিভ-সি, এবং বিরল ক্ষেত্রে সুইফটে, ডিভাইস বা ওএস সক্ষমতার ইঙ্গিত হিসাবে অপারেটিং সিস্টেম সংস্করণে নির্ভর করা এড়ানো ভাল। কোনও নির্দিষ্ট বৈশিষ্ট্য বা শ্রেণি উপলব্ধ কিনা তা যাচাই করার জন্য আরও নির্ভরযোগ্য পদ্ধতি সাধারণত রয়েছে।
এপিআইগুলির উপস্থিতি যাচাই করা হচ্ছে:
উদাহরণস্বরূপ, আপনি UIPopoverController
এটি ব্যবহার করে বর্তমান ডিভাইসে উপলব্ধ কিনা তা পরীক্ষা করতে পারেন NSClassFromString
:
if (NSClassFromString(@"UIPopoverController")) {
// Do something
}
দুর্বলভাবে সংযুক্ত ক্লাসগুলির জন্য, সরাসরি ক্লাসে বার্তা দেওয়া নিরাপদ। উল্লেখযোগ্যভাবে, এটি ফ্রেমওয়ার্কগুলির জন্য কাজ করে যা স্পষ্টভাবে "প্রয়োজনীয়" হিসাবে লিঙ্কযুক্ত নয়। অনুপস্থিত শ্রেণীর জন্য, শর্তটি ব্যর্থ করে, অভিব্যক্তিটি শূন্য করতে মূল্যায়ন করে:
if ([LAContext class]) {
// Do something
}
কিছু ক্লাস, যেমন CLLocationManager
এবং UIDevice
, ডিভাইস ক্ষমতা যাচাই করার জন্য পদ্ধতি সরবরাহ করে:
if ([CLLocationManager headingAvailable]) {
// Do something
}
প্রতীকের উপস্থিতি যাচাই করা হচ্ছে:
খুব মাঝেমধ্যে, আপনাকে অবশ্যই একটি ধ্রুবকের উপস্থিতি পরীক্ষা করতে হবে। এটি আইওএস 8 এ এসেছিল যার UIApplicationOpenSettingsURLString
মাধ্যমে সেটিংস অ্যাপ্লিকেশন লোড করতে ব্যবহৃত হয়েছিল -openURL:
। আইওএস-এর পূর্বে মানটির অস্তিত্ব ছিল না this
if (&UIApplicationOpenSettingsURLString != NULL) {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
}
অপারেটিং সিস্টেম সংস্করণের তুলনায়:
ধরে নেওয়া যাক অপারেটিং সিস্টেমের সংস্করণটি পরীক্ষা করার জন্য তুলনামূলকভাবে বিরল প্রয়োজনের মুখোমুখি হয়েছি। আইওএস 8 এবং তদূর্ধ্বকে লক্ষ্যযুক্ত প্রকল্পগুলির NSProcessInfo
জন্য ত্রুটির কম সম্ভাবনা সহ সংস্করণ তুলনা করার পদ্ধতি অন্তর্ভুক্ত রয়েছে:
- (BOOL)isOperatingSystemAtLeastVersion:(NSOperatingSystemVersion)version
পুরোনো সিস্টেমের লক্ষ্য করে প্রকল্প ব্যবহার করতে পারেন systemVersion
উপর UIDevice
। অ্যাপল এটি তাদের জিএলএসপ্রাইট নমুনা কোডে ব্যবহার করে ।
// A system version of 3.1 or greater is required to use CADisplayLink. The NSTimer
// class is used as fallback when it isn't available.
NSString *reqSysVer = @"3.1";
NSString *currSysVer = [[UIDevice currentDevice] systemVersion];
if ([currSysVer compare:reqSysVer options:NSNumericSearch] != NSOrderedAscending) {
displayLinkSupported = TRUE;
}
যদি আপনি যে কারণেই সিদ্ধান্ত নিতে systemVersion
চান তবে এটি এটিকে স্ট্রিং হিসাবে বিবেচনা করবেন বা প্যাচ রিভিশন নম্বরটি কেটে নেওয়ার ঝুঁকি রাখুন (উদাঃ 3.1.2 -> 3.1))