В 10.6 Apple добавила +[NSPropertyListSerialization dataWithPropertyList:format:options:error:]
и пометила более старый +[NSPropertyListSerialization dataFromPropertyList:format:errorDescription:]
как устаревший и вскоре устаревший. Один из способов использовать более новый вызов на 10.6 и выше и все же работать на более ранних выпусках ОС, будет выглядеть примерно так:
if ([NSPropertyListSerialization respondsToSelector:@selector(dataWithPropertyList:format:options:error:)]) {
data = [NSPropertyListSerialization dataWithPropertyList:dict
format:NSPropertyListXMLFormat_v1_0
options:0
error:&err];
} else {
data = [NSPropertyListSerialization dataFromPropertyList:dict
format:NSPropertyListXMLFormat_v1_0
errorDescription:&errorDescription];
}
Созданный на основе 10.4 SDK (для совместимости с этим выпуском), это приводит к: warning: 'NSPropertyListSerialization' may not respond to '+dataWithPropertyList:format:options:error:'
И, что еще хуже, поскольку компилятор не знает об этом селекторе, он может неправильно передавать аргументы.
Является ли NSInvocation одобренным / наилучшим способом вызова новых API, которые, с точки зрения SDK, еще не существуют?