টিএলডিআর
বর্তমান:
- দ্রুত :
if #available(iOS 9, *)
- ওবজে-সি, আইওএস :
if (@available(iOS 11.0, *))
- ওবজ-সি, ওএস এক্স :
if (NSClassFromString(@"UIAlertController"))
উত্তরাধিকার:
- সুইফ্ট (2.0 এর পূর্বে সংস্করণ) :
if objc_getClass("UIAlertController")
- ওবজে-সি, আইওএস (৪.২ এর পূর্ববর্তী সংস্করণ) :
if (NSClassFromString(@"UIAlertController"))
- ওবজ-সি, আইওএস (১১.০ এর পূর্ববর্তী সংস্করণ) :
if ([UIAlertController class])
সুইফট 2+
যদিও historতিহাসিকভাবে এটি নির্দিষ্ট ওএস সংস্করণগুলির চেয়ে দক্ষতা (বা শ্রেণীর অস্তিত্ব) পরীক্ষা করার জন্য সুপারিশ করা হয়েছে, তবে উপলভ্যতা পরীক্ষা করার প্রবর্তনের কারণে এটি সুইফট ২.০ তে ভাল কাজ করে না ।
পরিবর্তে এইভাবে ব্যবহার করুন:
if #available(iOS 9, *) {
let stackView = UIStackView(...)
} else {
let tableView = UITableView(...)
}
দ্রষ্টব্য: আপনি পরিবর্তে ব্যবহার করার চেষ্টা করলে objc_getClass()
আপনি নিম্নলিখিত ত্রুটি পাবেন:
U 'ইউআইএলআরলেটস কনট্রোলার' কেবল আইওএস 8.0 বা আরও নতুনতে উপলব্ধ on
পূর্ববর্তী সংস্করণ সুইফট
if objc_getClass("UIAlertController") != nil {
let alert = UIAlertController(...)
} else {
let alert = UIAlertView(...)
}
লক্ষ্য করুন objc_getClass()
চেয়েও বেশি নির্ভরযোগ্য NSClassFromString()
বাobjc_lookUpClass()
।
উদ্দেশ্য-সি, আইওএস 4.2+
if ([SomeClass class]) {
SomeClass *instance = [[SomeClass alloc] init];
} else {
}
দেখুন আরো বিস্তারিত জানার জন্য code007 এর উত্তর ।
ওএস এক্স বা আইওএসের পূর্ববর্তী সংস্করণ
Class klass = NSClassFromString(@"SomeClass");
if (klass) {
// class exists
id instance = [[klass alloc] init];
} else {
// class doesn't exist
}
ব্যবহার NSClassFromString()
। যদি এটি ফিরে আসে nil
তবে শ্রেণিটির অস্তিত্ব নেই, অন্যথায় এটি শ্রেণীর অবজেক্টটি ব্যবহার করবে যা প্রত্যাবর্তন করবে।
এই নথিতে অ্যাপল অনুসারে এটি প্রস্তাবিত উপায় :
[...] আপনার কোডটি [a] শ্রেণীর অস্তিত্বের জন্য পরীক্ষা NSClassFromString()
করবে যা ব্যবহার করে
[বৈধ শ্রেণি অবজেক্ট ফিরিয়ে দেবে যদি [শ্রেণি] উপস্থিত না থাকে বা শূন্য হয় না। যদি শ্রেণিটি বিদ্যমান থাকে তবে আপনার কোডটি এটি ব্যবহার করতে পারে [...]