Просто чтобы объединить ответ от @sickp и следующий комментарий от @ n13, я превратил это в категорию UIScreen, которая, кажется, работает хорошо. Проверка выполняется при первом вызове, а затем сохраняется для последующих вызовов.
@interface UIScreen (RetinaCheck)
+ (BOOL)retinaScreen;
@end
static BOOL isRetinaScreen = NO;
static BOOL didRetinaCheck = NO;
@implementation UIScreen (RetinaCheck)
+ (BOOL)retinaScreen
{
if (!didRetinaCheck) {
isRetinaScreen = ([[self mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)] &&
([self mainScreen].scale == 2.0));
didRetinaCheck = YES;
}
return isRetinaScreen;
}
@end
Может быть кому-то полезно.