Нет, это только для классов, которые вы не знаете, существуют ли они в вашей среде или динамически загружаются во время выполнения (то, что iOS не позволяет, но доступно в Mac OS X, так что вы ненужно позаботиться об этом).
Это необходимо сделать, например, если вы хотите поддерживать устройства 3.0, но используйте классы 4.x, если они доступны, например классы GameKit.Поскольку UIScreen доступен начиная с версии 2.0, вам не нужно использовать NSClassFromString здесь.Но вам нужно будет проверить наличие scale
, поскольку оно было добавлено в 4.0, и valueForKey:@"scale"
повысит NSUndefinedKeyException
на устройствах до 4.0.
Вместо кодирования значения ключа вытакже может сделать это:
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
CGFloat scale = [[UIScreen mainScreen] scale];
// or scale = [UIScreen mainScreen].scale;
// Now do something with the scale.
}