Компилятор не компилирует приложение для каждой версии устройства.Таким образом, вы не можете просто «исключить» xyz.h для устройств 3.1.Однако вы можете проверить, доступны ли классы.
Class popoverClass = NSClassFromString(@"UIPopoverController");
if(popoverClass) {
// class is available
UIPopoverController *popover = ...
}
else {
// use alternate method
[self presentModalViewController:vc animated:YES];
}
или можете применить другую логику к iphone или ipad
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
// do something that will only be done on ipad
}
else {
// do something that will only be done on iphone
}
, если хотите использовать классы, которые обычно доступны в нижнемВерсии прошивки, но определенные методы могут быть недоступны, вы должны проверить их перед использованием.
NSURL *fileURL = nil;
if ([NSURL respondsToSelector:@selector(fileURLWithPathComponents:)]) {
fileURL = [NSURL fileURLWithPathComponents:...];
}
else {
/* another method to create fileURL */
fileURL = ...;
}
Обратите внимание, что все это происходит во время выполнения.