Это не общее решение, но во многих случаях Apple предоставляет вызовы API для проверки, поддерживается ли конкретная функция или нет. Примеры могут быть:
+isSourceTypeAvailable:
и +availableMediaTypesForSourceType:
in UIImagePickerController
, что позволяет проверить, доступна ли камера для текущего устройства.
+canSendMail
в MFMailComposeViewController
, чтобы проверить, настроено ли устройство для отправки почты.
-canOpenURL
в классе UIApplication
, чтобы проверить, можно ли открыть URL. Например, его можно использовать для проверки возможности телефонного звонка:
if (![[UIApplication sharedApplication] canOpenURL:
[NSURL URLWithString:@"tel://"]])
//We cannot make a call - hide call button here
Если такие вызовы API доступны для вашей цели, я бы использовал их, а не полагался на жестко закодированные строковые идентификаторы.