Поддерживать версии, как правило, довольно просто, единственная ловушка, которой следует избегать, - это использовать условное построение, чтобы решить, какие функции поддерживать, так как это потребует от вас использования определенного двоичного файла для каждой версии.
Я бы использовалчто-то вроде этого:
NSString* featureVersion = @"5.0";
NSString* systemVersion = [[UIDevice currentDevice] systemVersion];
if ([currSysVer compare:reqSysVer options:NSNumericSearch] != NSOrderedAscending)
{
[object someIOS5SpecificMethod];
}
else
{
[object alternateMethod];
}
Чтобы использовать классы, зависящие от версии, вы всегда можете использовать что-то похожее на:
Class class = NSClassFromString(@"iOS5OnlyClass");
if (class)
{
id object = [[class alloc] init];
}